Обычно лучше вычленить ваши отношения, чтобы легче было понять, как связаны эти 2 сущности.Это позволит вам легко сказать, что это один-к-одному, многие-к-одному, один-ко-многим или многие-ко-многим и т. Д.
Это сказанное, как только вы поймете это, это тривиально для установки.
Если вы использовали Java или .Net, вы можете использовать Hibernate / NHibernate для автоматического создания таблиц для вас, указав отношения.
Вот как яразработал бы таблицы из того, что вы наметили: (Имейте в виду, что это соответствует схеме именования Java)
MemberType
id (int11, auto increment, primary key)
name (varchar31, unique)
One note about MemberType, if you're using Java and you will not dynamically add/remove member types, you should use an enum here.
Member
id (int11, auto increment, primary key)
memberType_id (int11, on update cascade, on delete cascade)
Organization
id (int11, auto increment, primary key)
name (varchar31, unique)
-- Depends on how you want this structured (I would design it as a many-to-many relationship
MemberOrganization
member_id (int11, on update cascade, on delete cascade, this links to the member id)
organization_id (int11, on update cascade, on delete cascade, this links to the organization id)
Чтобы получить список всех членов конкретной организации ...
SELECT
*
FROM
Organization o
INNER JOIN MemberOrganization mo ON mo.organization_id = o.id
INNER JOIN Member m ON m.id = mo.member_id
WHERE
o.name = 'StackOverFlow.com'
Посмотрев на ваш вопрос еще раз, я думаю, что вы ищете другой ответ.
Уолтер