2013-02-08 92 views
0

感谢您花时间阅读本文并试图帮助我,我非常感谢这些信息!MYSQL - 第一个数据库结构请帮助

这是我第一次做我自己的mysql数据库,我希望有一些指针。我查看了以前的问题,发现可以一次搜索多个表格......这样就扩展了我的可能性。

我所要做的,就是有一个PHP页面上雪地车俱乐部的搜索/过滤列表。

这些俱乐部应该是由州,县可列或可搜索按名称/其他包含的信息。

我也想让他们在结果中按照字母顺序排列,尽管输入的顺序是顺序的。

目前我的心在的地方,已经为纽约州,宾夕法尼亚等

的列的县(VARCHAR),Clubname(VARCHAR),街道地址(长文本),电话(VARCHAR)电子邮件表(VARCHAR)网站地址(VARCHAR)

我应该真正为每一个县,如NY.ALBANY来制作多个表,NY.MADISON

是我所选择的明智的人的字段格式?

应该解决被分解成子......如street1,STREET2,市,州,邮编

非常感谢你对任何输入您可以提供

最后,我想我会带有“是”或“否”的列“trailsopen”,并根据输入将tr背景更改为绿色或红色。

希望这是有道理... 约翰 -

+0

你或许应该只有一个表,并有状态栏也。不要指出,从长远来看,拥有多个表格只会让你自己变得更加困难。 – Pitchinnate 2013-02-08 13:55:09

+0

只要确保你使用你的索引,你就不会有任何问题,让他们在一张桌子上。 – Pitchinnate 2013-02-08 13:56:00

+0

@Pitchinnate这是可怕的建议!这就像说你不应该在面向对象的语言中使用多个类来使它更容易。你应该总是从逻辑上分解事物。 – Magnus 2013-02-08 13:59:11

回答

1

这里是我怎么会设置你的数据库:

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... 
+0

can county_id可以处理多个ID的? – 2013-02-08 14:35:54

+0

https://membership.nyssnowassoc.org/club/show/415 – 2013-02-08 14:36:51

+0

一个特定的俱乐部的例子... – 2013-02-08 14:38:23

0

从我的角度来看,这似乎是1台就足够了您的需求。 MySQL非常强大,有很多方法可以处理任何事情。我建议下载并使用MySQL Workbench,它比嵌入到网页中更容易,更快速地创建表格,更改表格和编写查询。

下载MySQL工作台 - >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。

堆栈溢出的目的是要回答这个问题有具体的代码或查询做更具体的问题。所以一旦你建立了一个程序,并且陷入困境,你可以在这里提出具体的问题。祝你好运!

0

U可以用复合键约束创建一个表。喜欢.. 我在一家公司有3个部门,每个部门都有多个子部门。所以我可以创建一个这样的数据库.. Dept_id || sub_dept_id ||名称|| Sal ||地址||电话 ..其中Dept_id和sub_dept_id将共同代表主键,并注意其独特性。

但是,请记住如果乌拉圭回合数据库将是太大,觉得你在做这一步之前,ü可能需要需要群集或指数为场景。 在编写SQL查询时,最好将子模块中的主模块划分为若干个子模块。所以你可以打破地址。 按照您的是/否....使用整数费尔德并计划它的方式,如果是,它会存储1,否则为0(零)...

+0

我可以说,仅纽约州就有243个俱乐部......其中一些在多个县......这样又增加了一层,我的想法只是为了复制信息,但我确信有一个更聪明的方法.. .. – 2013-02-08 14:23:16

0

你不应该为各县制定个别表格。你应该做的是为国家创建一个表格,一个县表格和一个地址表格。

结果可能是这个样子:

状态(ID,密码,姓名), 县(ID,STATEID,名), 俱乐部(ID,countyID,名称的StreetAddress,等... )

这个过程用来决定什么时候分解什么时候被称为“数据库规范化” - 实际上有算法可以为你做到这一点。维基页面是一个很好的开始:http://en.wikipedia.org/wiki/Database_normalization

街道地址的一个长文本是好的,顺便说一句,其他领域的变种也是如此。

+0

看起来像你和@pitchennate在这里一样的想法......俱乐部可以有多个县ID? https://membership.nyssnowassoc.org/club/show/415 – 2013-02-08 14:39:59

+0

@JohnMacKenzie是的,我刚在原评论中读到他错了。今天不是我的一天:)。如果你的俱乐部可以跨越多个县,那么数据库方式就是将“俱乐部”表修改为这样的:俱乐部(id,姓名,streetAddress等等)'并且有另一个表'clubXcounty'或类似这样的:'clubXcounty(clubID,countyID)'。然后,您可以在查询中使用SQL JOIN来获取所有涉及的县。您也可以将多个县ID添加到分会表中,但是您的SELECT可能最终难以编写和维护。 – Magnus 2013-02-08 14:46:14

+0

感谢您的帮助anmd输入magnus,我非常感谢:) – 2013-02-08 14:56:13

0
  1. 如果我真的可以使每个县多个表,如NY.ALBANY,NY.MADISON

这取决于,但在你的描述的情况下,另一种可能是有一个数据库表所有的雪地摩托俱乐部,以及所有州/县的一张桌子。在俱乐部表中,你可以有一个ID字段作为外键,将该条目链接到特定的州/县条目。 为了获得所有的信息,你只需要在表上进行JOIN操作(请参考mysql文档)。

  1. 我选择了合理的字段格式吗?

他们将工作..

  1. 应该解决被分解成子......如street1,STREET2,市,州,邮编?

基本上这里的问题是,如果您需要将其分解为子组件,无论是现在还是未来?如果它被分解了,你可以将数据分离出来,进一步处理(例如生成连续字母,自动查找......)可能更简单,但这取决于你的处理过程;如果你不需要它分开为什么让生活更复杂?

这么多答案已经..一致同意。

+0

感谢您的帮助:) – 2013-02-10 03:00:31