Това със сигурност е добра идея, тъй като нормализирате базата данни. Направих подобен дизайн в приложение, което пиша, където имам таблица за служители и таблица за потребители. Потребителите може да са от външна компания или служител, така че имам отделни таблици, защото служителят винаги е потребител, но потребителят може да не е служител.
Проблемите, с които ще се сблъскате, са, че винаги когато използвате таблицата с потребители, почти винаги ще искате таблицата с хора да получи името или други общи атрибути, които бихте искали да се показват.
От гледна точка на кодирането, ако използвате чист SQL, ще са необходими малко повече усилия, за да анализирате мислено оператора select. Може да е малко по-сложно, ако използвате ORM библиотека. Нямам достатъчно опит с тях.
В моето приложение го пиша в Ruby on Rails, така че постоянно правя неща като Emploee.user.name, където, ако ги държа заедно, ще бъде просто Emploee.name или user.name.
От гледна точка на ефективността, вие удряте две маси вместо една, но при правилни индекси, това трябва да е незначително. Ако имате индекс, който съдържа първичния ключ и името на лицето, например, базата данни ще удари потребителската таблица, след това индексът за таблицата с лица (с почти директно попадение), така че производителността ще бъде почти същата като с една маса.
Можете също така да създадете изглед в базата данни, за да запазите двете таблици свързани заедно, за да ви дадат допълнителни подобрения на производителността. Знам, че в по-късните версии на Oracle можете дори да поставите индекс на изглед, ако е необходимо, за да увеличите производителността.
person
Chris R.
schedule
18.09.2008