这是我第一次创建自己的mysql数据库,我希望能提供一些指导。我查看过以前的问题,发现可以一次搜索多个表格......这样就扩大了我的能力。
我想要做的是,在PHP页面上有一个可搜索/可过滤的雪地摩托俱乐部列表。
这些俱乐部应按州名,县名或可按名称/其他包含的信息进行搜索。
我也希望它们在结果中按字母顺序排列,尽管有输入顺序。
目前我的想法取而代之,有纽约,PA等表格
使用县(varchar)列,Clubname(varchar),街道地址(长文本),电话(varchar)电子邮件(varchar)网站地址(varchar)
我是否应该为每个县制作多个表格,例如NY.ALBANY,NY.MADISON
我选择了合理的字段格式吗?
地址应分为子组件......例如street1,street2,city,state,zip。
最终,我想我想要一个带有yes或no的列“trailsopen”,并根据输入将tr背景更改为绿色或红色。
希望这是有道理的......
答案 0 :(得分:1)
以下是我设置db的方法:
state
id (tinyint) //primary key auto incremented unsigned
short (varchar(2)) // stores NY, PA
long (varchar(20)) // Stores New York, Pennsylvania
county
id (int) //primary key auto incremented unsigned
state_id (tinyint) //points to state.id
name (varchar(50))
club_county
id (int) //primary key auto incremented unsigned
county_id (int) //points to county.id
club_id (int) //points to club.id
club
id (int) //primary key auto incremented unsigned
name (varchar(100))
address (varchar(100)
city (varchar(25))
zip (int)
etc...
答案 1 :(得分:0)
从我的角度来看,似乎1张桌子足以满足您的需求。 MySQL非常强大,有很多方法可以做任何事情。我建议下载并使用MySQL Workbench,这样可以比将它们嵌入网页更容易,更快速地创建表,更改表和编写查询。
下载MySQL Workbench - > http://dev.mysql.com/downloads/workbench/
您还需要了解很多关于MySQL查询的知识。我想你可以把你需要的所有信息放在一个表中,诀窍是用来显示信息的查询。
例如,假设您只有一个表,所有状态在一起。您可以通过以下查询显示来自纽约州的雪地移动俱乐部:
select * from my_table where state = "NY";
如果您想按分会名称显示字母结果,那么您可以使用以下内容:
select * from my_table where state = "NY" order by clubname;
网上有很多文档。所以我建议做几个小时的研究并使用MySQL Workbench。
Stack Overflow的目的是回答与特定代码或查询有关的更具体的问题。所以,一旦你建立了一个程序,并对某些事情感到困惑,你可以在这里提出具体的问题。祝你好运!
答案 2 :(得分:0)
U可以使用复合键约束创建单个表。喜欢.. 我在公司有3个部门,每个部门有多个子部门。所以我可以创建这样的数据库.. Dept_id || sub_dept_id ||名字||萨尔||地址||电话 ..其中Dept_id和sub_dept_id将共同代表主键并且看到它的唯一性。
但是请记住,如果你的数据库太大,那么在你做这个步骤之前想一想,你可能需要为那个场景需要聚类或索引。 在编写SQL查询时,将主模块划分为多个子模块的好习惯。所以你可以破坏地址。 根据你的是/否....使用整数feild并计划它如果是YES,它将存储1其他0(零)......
答案 3 :(得分:0)
您不应为各个县制作单独的表格。你应该做的是创建状态表,县的表和地址表。
结果可能如下所示:
州(身份证,代码,姓名), 县(id,stateID,name), 俱乐部(id,countyID,name,streetAddress等)
用于确定要分解的内容以及何时称为“数据库规范化”的过程 - 实际上有算法可以为您执行此操作。维基页面是一个很好的起点:http://en.wikipedia.org/wiki/Database_normalization
街道地址的一个长文本很好,顺便说一下,其他字段的varchars也是如此。
答案 4 :(得分:0)
这取决于,但在您描述的情况下,替代方案可能是拥有一个包含所有雪地摩托俱乐部的数据库表,以及一个用于所有州/县的表。在俱乐部表中,您可以将id字段作为外键,将该条目链接到特定的州/县条目。 要将所有信息放在一起,您只需对表执行JOIN操作(请参阅mysql文档)。
他们会工作..
基本上这里的问题是,如果您需要将其分解为现在或将来的子组件?如果它被分解,你将数据分开,这使得进一步处理(例如生成序列字母,自动查找......)可能更简单,但这取决于你的处理;如果你不需要它,为什么让生活更复杂?
很多答案已经同意了。