Каков наилучший способ реализовать эту базу данных - PullRequest
0 голосов
/ 07 августа 2011

Мне нужно реализовать систему с различными типами пользователей, и я думаю реализовать ее следующим образом:

  • Таблица пользователей только с идентификатором, адресом электронной почты и паролем.
  • Две разные таблицы соотносятся с пользовательской таблицей в соотношении 1: 1.Каждая таблица определяет конкретные атрибуты каждого типа пользователей.

Это лучший способ реализовать это?Я должен использовать механизм хранения InnoDB?

Если я понимаю это таким образом, как я могу обрабатывать таблицы в Zend Framework?

Ответы [ 2 ]

1 голос
/ 07 августа 2011

Я не могу ответить на вторую часть вашего вопроса, но описанный вами шаблон называется супер и подтипом в моделировании данных.Если это правильный выбор, нельзя ответить, не зная больше о различиях между этими типами пользователей и о том, как они будут использоваться в приложении.Существуют различные подходы при преобразовании логических супер / подтипов в физические таблицы.

Вот некоторые соответствующие ссылки:
http://www.sqlmag.com/article/data-modeling/implementing-supertypes-and-subtypes
и следующий о подводных камнях и (неправильном) использовании подтипов
http://www.ocgworld.com/doc/OCG_Subtyping_Techniques.pdf

В общем, с прагматической точки зрения я очень неохотно следую вашему выбору и чаще всего решаю создать одну таблицу, содержащую все столбцы.В большинстве случаев существует ряд мест, где приложение должно показывать всех пользователей в каком-либо виде списка с конкретными столбцами для определенных типов (и пустыми, если не применимо для этого типа).Это быстро приводит к несложным запросам и разного рода дополнительному коду для работы с различными таблицами, которые просто не стоят того, чтобы быть «концептуально правильными».

Две причины, по которым я все еще делю подтипы на разные таблицы:если подтипы настолько различны, что не имеет никакого логического смысла иметь их в одной таблице, и если количество строк настолько велико, что издержки «ненужных» столбцов при помещении их в одну таблицу фактически начинают иметь значение

0 голосов
/ 07 августа 2011

На стороне php вы можете использовать Doctrine 2 ORM. Его легко интегрировать с zf, и вы могли бы легко реализовать эту структуру таблицы в качестве наследования в вашем отображении доктрины.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...