Схема именования Внешнего ключа

Вам нужно переопределить неназванную структуру во время &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)
}

https://play.golang.org/p/Fv5QYylFGAY

138
задан chills42 3 November 2008 в 20:56
поделиться

4 ответа

Стандартная конвенция в SQL Server:

FK_ForeignKeyTable_PrimaryKeyTable

Так, например, ключ между примечаниями и задачами был бы:

FK_note_task

И ключ между задачами и пользователями был бы:

FK_task_user

Это дает Вам 'сразу', представление которого таблицы вовлечены в ключ, таким образом, это помогает видеть, который представляет в виде таблицы конкретный (первый названный), зависит от (второй названный). В этом сценарии полный набор ключей был бы:

FK_task_user
FK_note_task
FK_note_user

, Таким образом, Вы видите, что задачи зависят от пользователей и примечаний, зависят и от задач и от пользователей.

164
ответ дан 23 November 2019 в 23:21
поделиться

Я использую два символа подчеркивания в качестве разделителя, т.е.

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))
        ...
36
ответ дан 23 November 2019 в 23:21
поделиться

Как насчет FK_TABLENAME_COLUMNNAME?

Keep я t Simple Stupid, когда когда-либо возможно.

16
ответ дан 23 November 2019 в 23:21
поделиться

Я обычно просто оставляю свой PK названным идентификатором и затем связываю мое имя таблицы и имя столбца ключа при именовании FKs в других таблицах. Я никогда не беспокоюсь преобразованием регистра верблюда, потому что некоторые базы данных отбрасывают чувствительность к регистру и просто возвращают весь верхний регистр или имена нижнего регистра так или иначе. В любом случае вот то, на что была бы похожа моя версия Ваших таблиц:

task (id, userid, title);
note (id, taskid, userid, note);
user (id, name);

Примечание, что я также называю свои таблицы в исключительном, потому что строка представляет один из объектов, которые я сохраняю. Многие из этих конвенций являются персональным предпочтением. Я предположил бы, что более важно выбрать конвенцию и всегда использовать его, чем это должно принять чужую конвенцию.

9
ответ дан 23 November 2019 в 23:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: