База данных SQL: отношения и схема - PullRequest
0 голосов
/ 08 декабря 2011

Я студент, и у меня есть вопрос о схеме базы данных, я уже создал диаграмму отношений между сущностями [ERD], и на этом шаге я должен создать схему базы данных, должны ли все объекты в моей базе данных иметь связь между ними и другие лица? то есть: каждая сущность должна иметь внешний ключ для этой сущности перед ней, потому что я могу создать все таблицы, и только 2 таблицы могут иметь отношение между ними, и я управляю другими таблицами с помощью программы на C #, которую собираюсь создать.

** в моем ERD все сущности имеют отношение друг к другу.

Ответы [ 4 ]

2 голосов
/ 08 декабря 2011

... должны все сущности в моей базе данных иметь связь между ними и другие лица?

Нет. Сущности, конечно, могут стоять самостоятельно. Хотя на практике, если вы обнаружите, что у вас очень мало отношений, вы, вероятно, делаете что-то не так ...

Вы правы, когда говорите, что только две таблицы могут иметь отношения, но я бы сказал, что отношения могут иметь только двух участников; таблицы, безусловно, могут относиться не только к одной другой таблице.

1 голос
/ 08 декабря 2011

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

База данных сотрудников:

EmployeeInfoTable:
   pk EmployeeID
      EmployeeName
      EmployeeDateHired
   fk SalaryID

EmployeeLoginTable
   pk LoginID
   fk EmployeeID
      Username
      Password

SalaryTable
   pk SalaryID
      SalaryRange

Итак, что нужно сделать, это убедиться, что если вы добавляете зарплату сотруднику, она должна существовать в таблице зарплат, а если вы добавляете логин, то вам нужен сотрудник для ссылки. Это просто дополнительный уровень безопасности, чтобы убедиться, что данные, которые вводятся в базу данных, действительны и могут использоваться.

Хотя вы можете технически управлять этим с помощью C # или любого другого языка программирования, который вы хотите, легко забыть об этом небольшом правиле, особенно в базе данных, которая содержит около 200 таблиц или более. Так что привыкание использовать отношения и поддерживать ссылочную целостность - это очень хорошая вещь.

0 голосов
/ 08 декабря 2011

Все сущности не должны иметь отношения друг с другом. Отношения будут существовать только между двумя входами в ERD, если один объект каким-либо образом связан с другим.

Общее правило для создания таблицы:

  1. У каждого объекта в ERD будет таблица для него
  2. Для отношения «один ко многим» в ERD таблица «многие стороны» будет содержать внешний ключ к таблице «одна сторона»
  3. Для отношения «многие ко многим» будет отдельная таблица для отношения, которая будет содержать внешние ключи для обеих таблиц сущностей
  4. Если отношение имеет атрибут, для отношения будет отдельная таблица, которая будет содержать внешние ключи для обеих таблиц сущностей
0 голосов
/ 08 декабря 2011

первичный ключ всегда должен быть id из-за соглашения, и ваши внешние ключи могут называться othertablename_id, поэтому, если таблица имеет ссылку на все другие таблицы, ей потребуется ключ для каждой из них. *Например, 1003 *

: если dogs имеет более одного владельца, но owners может иметь только одну собаку, вы можете просто указать dog_id в таблице owner.но тогда вам нужно будет запросить таблицу owners, чтобы найти всех владельцев одной собаки.

если собаки имеют более одного владельца, а владелец может иметь более одной собаки, то вам нужно объединитьсятаблица с именем dogs_owners с идентификатором и внешним ключом dog_id и owner_id

конечно, вы можете называть свои таблицы и поля как угодно, но принято использовать id и _id

да, сущность обычно приравнивается только к одной таблице, за исключением случаев, когда у вас есть отношения многие-ко-многим между вашими сущностями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...