【发布时间】:2011-02-12 10:34:18
【问题描述】:
我正在设计一个产品数据库,其中产品可以根据其类型具有非常不同的属性,但每种类型的属性都是固定的,并且类型根本无法管理。例如:
杂志:标题、issue_number、页数、副本、close_date、release_date
web_site:名称、带宽、点击次数、date_from、date_to
我想使用 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
这可以处理级联产品删除,但是......好吧,我并不完全相信......
【问题讨论】:
标签: mysql database-design innodb