Лучший способ определить схему вашей базы данных - начать с моделирования домена приложения (кто-нибудь разрабатывает управление доменом?) И посмотреть, какие таблицы формируются на основе определенных вами доменных объектов.
Я думаю, что это лучший способ, потому что на самом деле база данных - это просто место для хранения информации из приложения, она никогда не должна руководить проектом. Это не единственное место для сохранения информации. У нас есть пользователи, которые хотят работать с плоскими файлами или базой данных, например. Они также могут использовать файлы XML. Таким образом, если начать с ваших доменных объектов, а затем сгенерировать таблицы (или простой файл, или XML-схему или что-то еще) из этого, то в итоге вы получите гораздо лучший дизайн.
Хотя это может зависеть от того, используете ли вы объектно-ориентированный язык, использование инструмента ORM, такого как Hibernate / NHibernate, SubSonic и т. Д., Действительно может упростить этот переход, включая создание сценариев создания базы данных.
Что касается производительности, то производительность должна быть одной из последних вещей, на которую вы обращаетесь в приложении, она никогда не должна влиять на дизайн. После того, как вы наладите и запустите хорошую схему на основе своего домена, вы всегда можете внести изменения, чтобы улучшить его производительность.