Вам нужно переопределить неназванную структуру во время &Configuration{}
package main
import "fmt"
type Configuration struct {
Val string
Proxy struct {
Address string
Port string
}
}
func main() {
c := &Configuration{
Val: "test",
Proxy: struct {
Address string
Port string
}{
Address: "127.0.0.1",
Port: "8080",
},
}
fmt.Println(c)
}
Стандартная конвенция в SQL Server:
FK_ForeignKeyTable_PrimaryKeyTable
Так, например, ключ между примечаниями и задачами был бы:
FK_note_task
И ключ между задачами и пользователями был бы:
FK_task_user
Это дает Вам 'сразу', представление которого таблицы вовлечены в ключ, таким образом, это помогает видеть, который представляет в виде таблицы конкретный (первый названный), зависит от (второй названный). В этом сценарии полный набор ключей был бы:
FK_task_user
FK_note_task
FK_note_user
, Таким образом, Вы видите, что задачи зависят от пользователей и примечаний, зависят и от задач и от пользователей.
Я использую два символа подчеркивания в качестве разделителя, т.е.
fk__ForeignKeyTable__PrimaryKeyTable
Это вызвано тем, что имена таблиц будут иногда содержать сами символы подчеркивания. Это следует соглашению о присвоении имен для ограничений обычно, потому что имена элементов данных будут часто содержать символы подчеркивания, например,
CREATE TABLE NaturalPersons (
...
person_death_date DATETIME,
person_death_reason VARCHAR(30)
CONSTRAINT person_death_reason__not_zero_length
CHECK (DATALENGTH(person_death_reason) > 0),
CONSTRAINT person_death_date__person_death_reason__interaction
CHECK ((person_death_date IS NULL AND person_death_reason IS NULL)
OR (person_death_date IS NOT NULL AND person_death_reason IS NOT NULL))
...
Как насчет FK_TABLENAME_COLUMNNAME
?
Keep я t Simple Stupid, когда когда-либо возможно.
Я обычно просто оставляю свой PK названным идентификатором и затем связываю мое имя таблицы и имя столбца ключа при именовании FKs в других таблицах. Я никогда не беспокоюсь преобразованием регистра верблюда, потому что некоторые базы данных отбрасывают чувствительность к регистру и просто возвращают весь верхний регистр или имена нижнего регистра так или иначе. В любом случае вот то, на что была бы похожа моя версия Ваших таблиц:
task (id, userid, title);
note (id, taskid, userid, note);
user (id, name);
Примечание, что я также называю свои таблицы в исключительном, потому что строка представляет один из объектов, которые я сохраняю. Многие из этих конвенций являются персональным предпочтением. Я предположил бы, что более важно выбрать конвенцию и всегда использовать его, чем это должно принять чужую конвенцию.