Mysql
 sql >> база данни >  >> RDS >> Mysql

Идентифициращи срещу неидентифициращи взаимоотношения (Отново!!!)

Прекалено мислите за връзката между опцията и идентичността. Докато всичко не стане по-естествено за вас, най-добре е да мислите за тях като за напълно несвързани .

По отношение на опцията е важно да запомните, че опцията е насочена. За да използвате вашия пример за employee_equipment :Разбира се, служителите нямат нужда от оборудване. Връзката едно към много от employee към employee_equipment е по избор. В същото време, гледайки от обратната гледна точка, връзката е задължителна. Не можете да имате запис в employee_equipment освен ако няма employee да го свържете с.

Идентичността няма нищо общо с опцията, освен случайно идентифициращата връзка е задължителна от детето към родителя. Дали също е задължително от родителя към детето, не е нито тук, нито там, що се отнася до самоличността.

Това, което прави връзката идентифицираща, е, че трябва да знаете за кой родител говорите (както и някои други неща), за да знаете за какво дете говорите. Тоест, първичният ключ на детето трябва да включва външен ключ към родителя.

Чисти пресечни таблици (напр. employee_equipment ) са добри примери за това. Първичният ключ на чистото пресичане е комбинацията от външни ключове към двете родителски таблици. Имайте предвид, че някои хора могат също да добавят сурогатен ключ към тези видове таблици. Няма толкова голямо значение от гледна точка на идентичността, ако има множество кандидат-ключове. Това, което е важно при определянето на самоличността, е дали външният ключ е част от кандидат ключ, дали този кандидат ключ е първичен ключ или не.

Друг добър пример би бил нещо като каталог с метаданни на база данни, където колона се идентифицира от таблицата, към която принадлежи, точно както таблицата се идентифицира от схемата, в която се намира, и т.н. Знаейки, че една колона се нарича NAME не ви казва коя е колоната. Знаейки, че това е NAME колона в CUSTOMER таблицата помага. (Ще трябва също да знаете коя схема CUSTOMER е в и така нататък).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Създайте обект Date в PHP за дати преди 1970 г. в определен формат

  2. Как да използвате съветника за база данни на cPanel MySQL

  3. Mysql :Не е разрешено да връща набор от резултати от функция

  4. Laravel Eloquent Ignore Casing

  5. DriverManager няма подходящ драйвер mysql