我试图弄清楚我正在制作的数据库要使用什么样的规范化和结构。它将是一个属性列表(建筑编号街道地址、街道名称、城市、州、邮政编码、单元号)。
从那里,我打算用各种信息制作一张桌子。然后我将有一个中间表来连接所有信息并进行记录。据我所知,几乎每一列都会被多值除单元号之外。所以,我认为需要完全标准化:
Table building_number
---------------------
building_number_id int primary key auto index not null
buildind_namber tinyint
Table city
--------------------
city_id building_number_id int primary key auto index not null
city_name varchar(30)
Table state
--------------------
state_id building_number_id int primary key auto index not null
state_name varchar(30)
Table zip
---------------------
zip_id building_number_id int primary key auto index not null
zip_name varchar(30)
Table building_name
---------------------
building_name_id int primary key auto index not null
building_name varchar(50)
Table owner
---------------------
owner_id int primary key auto index not null
owner_name varchar(30)
Table info
----------------------
info_id int primary key auto index not null
rent tinyint
condition varchar(10)
comment varchar(1000)
Intermediate table
--------------------------
building_number_id int
street_id int
city_id int
state_id int
building_name_id
owner_id
info_id
(all these keys are foreign keys referencing their respected tables/primary keys)
我将创建一个 html 搜索文本框,它将接受动态输入并根据给出的任何内容提取查询...完整的确切地址、街道名称或建筑物编号街道名称城市等。我还没有开发我的搜索 mysql算法呢。我只是在创建我的数据库的开始阶段。
我将使用 innodb 引擎和 b-tree 索引。我将索引除评论之外的每一列,因为我将进行这些动态输入搜索(如谷歌)。
作为一个业余爱好者,我正在为自己做这件事。正因为如此,我更喜欢从头开始手动操作,而不是使用一些框架或插件。
对于我正在做的事情,这个数据库设计和规范化是否正确?