Я разрабатываю базу данных продуктов, в которой продукты могут иметь очень разные атрибуты в зависимости от их типа, но атрибуты фиксированы для каждого типа, а типы вообще не управляемы. Например.:
журнал: название, номер_выпуска, страницы, копии, дата_закрытия, дата_выпуска
веб-сайт: название, пропускная способность, просмотры, дата_от, дата_до
Я хочу использовать InnoDB и обеспечивать целостность базы данных настолько, насколько позволяет движок. Каков рекомендуемый способ справиться с этим?
Я ненавижу те конструкции, в которых таблицы имеют 100 столбцов, а большинство значений NULL, поэтому я подумал о чем-то вроде этого:
product_type
============
product_type_id INT
product_type_name VARCHAR
product
=======
product_id INT
product_name VARCHAR
product_type_id INT -> Foreign key to product_type.product_type_id
valid_since DATETIME
valid_to DATETIME
magazine
========
magazine_id INT
title VARCHAR
product_id INT -> Foreign key to product.product_id
issue_number INT
pages INT
copies INT
close_date DATETIME
release_date DATETIME
web_site
========
web_site_id INT
name VARCHAR
product_id INT -> Foreign key to product.product_id
bandwidth INT
hits INT
date_from DATETIME
date_to DATETIME
Это может справиться с каскадным удалением продукта, но... Ну, я не совсем уверен...