«Хорошо сформулированная проблема - это проблема, которая уже наполовину решена».
Мне кажется, что вы смешиваете несколько понятий. Вы проверяете другие приложения базы данных, но, похоже, вы больше запутались, чем стали более информированными.
У вас есть несколько объектов разных классов, и вы хотите знать, как хранить их в базе данных. Обычно это называется «причудливым именем» реляционного сопоставления объектов (O.R.M.).
Кроме того, вы хотите использовать глобальный уникальный идентификатор (G.U.I.D.), чтобы идентифицировать объект как бизнес-объект / объект программирования и строку в таблице.
Кроме того, вы также хотите использовать G.U.I.D. идентифицировать класс или объект определенного типа.
Допустим, вы создаете приложение. где у вас есть несколько объектов. Существует несколько классов объектов, таких как «Пользователи», «События», «Страницы» и другие. Вы можете иметь несколько объектов одного и того же класса / типа, но вам нужен способ отличить один от другого. Для идентификации «Джона Доу» из Мичигана, из «Джона Доу» из Квинсленда. Допустим, ваши объекты будут использовать свойство типа G.U.I.D.
Итак, давайте предположим, что вы создали таблицу для каждого класса («user» для «Users», стандартный идентификатор таблицы - единственное и строчное, хотя вы можете игнорировать ее, «event» для «events» и т. Д.). Каждая таблица имеет несколько полей, которые представляют свойства каждого объекта. Таким образом, «пользователь» будет иметь такие поля, как «user_key GUID» и, возможно, «user_name varchar (100)» и «user_birthdate datetime». То же самое относится и к другим таблицам.
Я использовал «supertable», но только для очень специфических, не распространенных приложений. Я не думаю, что вам нужна таблица, которая смешивает "пользователи", "события", "страницы". У меня был случай, когда у нас были супертаблицы «клиенты», а также подтаблицы «компания» и «человек» с конкретными дополнительными полями. Иногда нам приходилось проверять продажи для всех клиентов и объединять их с помощью таблицы «клиенты». Иногда нам приходилось предлагать корпоративную скидку на продукты и просматривать подтаблицу «компания».
В случае, если вы хотите, чтобы этот Supertable / «IS a» был супертабильным, вам не нужно иметь другое поле для первичного ключа суперпопулярного первичного ключа и таблицы сведений, может быть одного типа.
Я предлагаю избегать любой ценой использования составных / составных ключей («главный ключ» плюс «другие» поля), используйте первичный ключ для одного поля. Я также предлагаю назначить Г.У.И.Д. ключ с помощью программирования, а не в базе данных.
Г.У.И.Д. использует больше памяти и дискового пространства, чем целочисленный ключ, но очень быстро и легко получить ключ, который очень сложно скопировать.
Опять же, вы спрашиваете больше о том, как представлять объекты в базе данных, чем об использовании G.U.I.D.