0

这是我第一次制作自己的mysql数据库,希望得到一些指点。我查看了以前的问题,发现可以一次搜索多个表......这样就扩大了我的可能性。

我想要做的是在 PHP 页面上有一个可搜索/可过滤的 Snowmobile 俱乐部列表。

这些俱乐部应该可以按州、县列出或按名称/其他包含的信息进行搜索。

尽管输入顺序不同,我也希望它们在结果中按字母顺序排列。

目前我的想法是,为纽约、宾夕法尼亚等地准备一张桌子

包含县(varchar)、俱乐部名称(varchar)、街道地址(长文本)、电话(varchar)电子邮件(varchar)网站地址(varchar)的列

我真的应该为每个县制作多个表格吗,例如 NY.ALBANY 、 NY.MADISON

我选择的字段格式是合理的吗?

应该将地址分解为子组件...例如 street1、street2、city、state、zip。

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

希望这是有道理的...

4

5 回答 5

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...
于 2013-02-08T14:30:49.587 回答
0

您不应该为各个县制作单独的表格。相反,您应该做的是创建一个州表、一个县表和一个地址表。

结果可能如下所示:

州(id、代码、名称)、县(id、stateID、名称)、俱乐部(id、countyID、名称、街道地址等...)

用于确定要分解什么以及何时分解的过程称为“数据库规范化” - 实际上有算法可以为您执行此操作。维基页面是一个很好的起点:http ://en.wikipedia.org/wiki/Database_normalization

顺便说一句,街道地址的一个长文本很好,其他字段的 varchars 也是如此。

于 2013-02-08T14:08:30.110 回答
0

从我的角度来看,一张桌子似乎足以满足您的需求。MySQL 是如此强大,以至于有很多方法可以做任何事情。我推荐下载和使用 MySQL Workbench,它使得创建表、更改表和编写查询比将它们嵌入到网页中更容易和更快。

下载 MySQL Workbench -> http://dev.mysql.com/downloads/workbench/

您还需要了解很多有关 MySQL 查询的知识。我认为您可以将所需的所有信息放在一张表中,诀窍在于您使用哪个查询来显示信息。

例如,假设您只有 1 个表,所有状态都在一起。您可以使用如下查询仅显示纽约州的雪地摩托俱乐部:

select * from my_table where state = "NY";

如果您想按俱乐部名称的字母顺序显示结果,那么您将使用如下内容:

select * from my_table where state = "NY" order by clubname;

网上有很多文档。所以我建议做几个小时的研究并使用 MySQL Workbench。

Stack Overflow 的目的是回答与特定代码或查询有关的更具体的问题。因此,一旦您构建了一个程序,并在某些事情上遇到困难,您可以在这里提出具体问题。祝你好运!

于 2013-02-08T14:00:01.093 回答
0

您可以使用复合键约束创建单个表。就像..我在一家公司有 3 个部门,每个部门都有多个子部门。所以我可以创建一个这样的数据库.. Dept_id || sub_dept_id || 姓名 || 萨尔 || 地址 || Phone ..where Dept_id 和 sub_dept_id 将共同代表主键并看到它的唯一性。

但是请记住,如果您的数据库太大,那么在您执行此步骤之前请考虑一下,您可能需要针对该场景进行集群或索引。在编写 SQL 查询时,最好将一个主模块划分为多个子模块。所以你可以打破地址。根据您的是/否....使用整数字段并计划它,如果它是,它将存储 1 否则 0(零)...

于 2013-02-08T14:02:54.927 回答
0
  1. 我真的应该为每个县制作多个表格吗,例如 NY.ALBANY 、 NY.MADISON

这取决于,但在您描述的情况下,另一种选择可能是拥有一个包含所有雪地摩托俱乐部的数据库表,以及一个包含所有州/县的表。在 clubs 表中,您可以有一个 id 字段作为外键,它将条目链接到特定的州/县条目。要将所有信息放在一起,您只需对表执行 JOIN 操作(请参阅 mysql 文档)。

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

他们会工作..

  1. 是否应该将地址分解为子组件……例如 street1、street2、city、state、zip?

本质上,这里的问题是您现在或将来是否需要将其分解为子组件?如果它被分解,您将数据分开,这使得进一步的处理(例如生成串行字母、自动查找..)可能更简单,但这取决于您的处理;如果你不需要它分开为什么要让生活更复杂?

已经有这么多答案了..同意。

于 2013-02-08T14:13:46.180 回答