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

Трябва ли вместо това тази диаграма за ER да използва троична връзка

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

Това е една от многото възможни връзки за тези три субекта.

Да, така е. Но тройната връзка се изразява в термините на тези диаграмни двоични връзки. (И не обратното.)

Всяка таблица – базова променлива или резултат от заявка – съдържа редове, които участват в някаква конкретна връзка. Можем да характеризираме връзката чрез предикат --шаблон на изявление, параметризиран от атрибути.

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

-- shipped item ItemNumber is received by retail center UniqueId
SELECT * FROM ReceivedFrom
-- shipped item ItemNumber takes transportation event ScheduleNumber
SELECT * FROM ShippedVia

Предикатът на израз на заявка се изгражда от неговите оператори и аргументи. Например предикатът на ЕСТЕСТВЕНОТО JOIN на две таблици е И на предикатите на таблиците.

-- shipped item ItemNumber is received by retail center UniqueId
       and takes transportation event ScheduleNumber
SELECT * FROM ReceivedFrom NATURAL JOIN ShippedVia

Разбира се, вашата конкретна концепция за тройната връзка може да не е точно тази заявка/таблица. Но практична UPS база данни би имала таблици за основните взаимоотношения, по отношение на които може да се изрази всяка релевантна връзка.

(Нормализацията разделя предикатите от формата "... AND ..." на отделни предикати за "...", когато това е възможно и полезно; оригиналната таблица се връща от JOIN на компонентите.)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ръководство за проектиране на база данни за система за управление на служители в MySQL

  2. Разделяне на ограничена низова стойност на редове

  3. Заключване на реда за избор на MySQL, докато не се изпълни UPDATE?

  4. Вашата парола не отговаря на текущите изисквания на политиката

  5. Как да изведете данни, когато използвате $stmt->fetch(PDO::FETCH_ASSOC);