2015-06-15 2 views
0

Моя проблема:Структурная целостность MySQL по сравнению с простотой?

  • На PHP/MySQL приложения я должен отличить registered accounts от simple visitors. Оба они могут выполнять действия, которые записываются в базу данных. Теперь я использую отдельную таблицу для visitors и отдельную таблицу для registered accounts.

Мой пример решения до сих пор:

  • Вариант № 1:Registered accounts и visitors разделены на две таблицы. Оба из них могут иметь sessions, а соотношение между таблицами: non-mandatory, так как человек является либо visitor, либо registered account. enter image description here

    Вариант № 2: Все в одной таблице, и отношения между таблицами являются обязательными, так как каждый может иметь sessions, но так как человек является либо visitor или registered account, он может не иметь email или password, так что может быть NULL. Это может привести к ошибкам в целостности.

enter image description here

Мой вопрос:

  • Должен ли я держать accounts в отдельной таблице с visitors или я может поставить всех в одну таблицу с булевой isThisAccount переменной который указывает, когда лицо является registered account или просто простым visitor?

Я также открыт для разных подходов.

ответ

1

Возможно, я бы пошел с третьим вариантом: Связывайтесь с посетителями и посетителями счетов. Таким образом вам нужно только одно поле visitorID в таблице sessions и только один столбец NULL (accountID в visitors). На мой взгляд, это концептуально чище, так как люди, выполняющие действия, всегда являются посетителями, у которых может быть или нет учетная запись.