2012-01-30 3 views
0

Просто вопрос домашней работы Я пытаюсь выяснить, я был бы признателен за помощь.Простая база данных - проблемы с дизайном

Видимо, есть три проблемы с дизайном этой конструкции базы данных:

Account = {AccNumber, Type, Balance} 
Customer = {CustID, FirstName, LastName, Address, AccNumber} 

Тот, что вполне очевидно, что «CustID» бесполезно, если «AccNumber» существует.

Я не совсем уверен во второй и третьей проблемах.

Есть ли проблема с отдельным атрибутом для «FirstName» и «LastName», наклоняют мы просто используем „Name“?

И еще один вариант, если „AccNumber“ является первичным ключом (при условии, CustID будет удален), это, вероятно, должно быть место в начале:

Такие, как:

Customer = {AccNumber, Name, Address} 

Любой вход был бы оценен

Благодаря

ответ

3

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

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

Удачи в выполнении домашних заданий ...

+0

-1 для принятия предположений, как в ответе @ tyjkenn, но +1 для решения его вопроса об имени. –

3

Проблема заключается в том, что вы не представили нам с тем, что база данных должна представлять в словах; как и сейчас, нет ничего «неправильного» в дизайне, поскольку мы не знаем, что дизайн должен моделировать.

Я, конечно же, не сказал бы, что CustID бесполезен, так как он служит в качестве основного ключа таблицы. То, что вам нужно определить, - это отношения между клиентами и счетами. Она должна быть одна из следующих:

  1. Один клиент может быть привязан к нескольким счетам, но один счет может быть привязан к одному клиенту
  2. Один клиент может быть привязан только к одному счету, но учетная запись может быть привязана к нескольким клиентам.
  3. Один клиент может быть связан с несколькими учетными записями, и один счет может быть привязан к нескольким клиентам

Прямо сейчас, с AccNumber в Customer таблице, ваш дизайн модели # 2.

+0

Спасибо за ответ. Единственной дополнительной полезной информацией, упомянутой в задании, является то, что эта таблица используется для «банковского счета». –

+0

Я полагаю, что более подходящей установкой было бы исключить «AccNumber» для поля Customer и добавить дополнительную таблицу: CustomerAccounts = {CustID, AccNumber}. Новая таблица учетных записей будет такой: Account = {AccNumber, Type, Balance}. –

+0

@GregorioDiStefano: Это имеет смысл только в том случае, если учетная запись имеет смысл * не * прикреплена к клиенту * или * учетная запись может быть прикреплена к нескольким клиентам. Если ни один из них не является истинным (это означает, что учетная запись привязана к одному клиенту), то вы должны иметь столбец 'CustId' в таблице' Account'. –

0

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

Отношения «многие ко многим» будут проблемой. Вместо этого вы можете создать третью таблицу, содержащую отношения.Например:

Account = {AccNumber, Type, Balance} 
Connection = {ConnID, AccNumber, CustID} 
Customer = {CustID, FirstName, LastName, Address} 

Таким образом, как счета и Клиент являются подчинен Connection (за неимением лучшего названия). Вы можете запросить все соединения с определенным номером AccNumber и найти всех клиентов, использующих эту учетную запись, и наоборот.

+1

ConnID является избыточным. Первичный ключ в такой таблице может быть AccNumber и CustID вместе; вы не хотите дублировать отношения CustID-AcctNumber. – Rob

+0

-1 только потому, что это делает предположения о требованиях (а именно, что должны существовать отношения M: M между 'Customer' и' Account'), которые являются необоснованными. Хотя предположение может быть правильным (мы не знаем), вопрос не дает никаких указаний на то, что это так. –

Смежные вопросы