Я хочу создать базу данных для своего приложения, и у меня возник вопрос о том, как определить связь между объектами.Дизайн базы данных: определение отношения между объектами в базе данных
У меня есть два связанных объекта, ID которых является составным. Например:
- адрес лицо, идентифицируются свойствами [улица, номер дома, город, страна], а также номер телефона (хх-YYYYYY)
- сущность, которая определяется свойствами [номер региона, номер].
Отношения является «Для каждого адреса есть несколько телефонных номера, у меня есть два возможных способ определения таблицы:.
- таблица, соединявшей всех поля ID
- Адрес → [номер улицы, номер дома, город, страна, ..., регион номер, номер]
- Номер телефона → [номер региона, номер, ...]
- Таблицы с полем идентификатора (GUID), которые связаны этим полем.
- Адрес → [ID, улица, номер дома, город, страна, ...,]
- PhoneNumber → [ID, номер региона, число, ..., AddressID]
В первом решении первичным ключом будут все поля, идентифицирующие объект, а во втором - первичный ключ будет только полем идентификатора.
Мой вопрос - какой лучший способ? (по производительности, обслуживанию, дизайну и т. д.)
В моем первом подходе ключ - это не все поля в таблице, это только ключи, которые соединяют таблицу с другой таблицей. Когда я использую второй подход, я должен добавить ограничение уникальности для всех этих полей, которые логически образуют первичный ключ. Я предполагаю, что если я добавлю ограничение уникальности, то мне также нужно добавить индекс в эти поля, так как уникальность без индекса будет медленной (правильно?). Кстати, в моем сценарии идентификатор никогда не обновляется, поэтому было правильно определить эти поля как первичные. – Andy
Вы не очень четко знаете, какие из ваших полей * являются * ключами. Может быть, вы должны отредактировать вопрос, чтобы поля, которые, по вашему мнению, были бы выделены жирным шрифтом или тому подобное, потому что я не понимаю вашу идею №1. В вашей идее №2 вы делаете это неправильно: определяя PhoneNumberID в таблице Address, вы устанавливаете модель данных для нескольких адресов на номер телефона. – Tomalak