2014-12-13 57 views
0

我在想什么是创建数据库的最佳方式。很多时候我面临这样的想法:什么是最好的?MySQL设计/建模

  • 场景1:只有一个请求,我的数据库,而PHP转换的内容被存储。
  • 方案2:一种MYSQL_QUERY到我的数据库来选择,这将在第二MYSQL_QUERY转换的含义来使用的一个值(平移例如1 =公共)
  • 方案3:一种MYSQL_QUERY到我的数据库来选择一个值我使用PHP进行转换/翻译。

请让我用一个例子更加清晰: 比方说,我有哪些存储组织&水平table1的

  • 场景1:我创建了2场(VARCHAR(255))和我在表格1中创建了2个字段(整数),并存储了organisation_id =“1”& level_id =“2”,然后我创建了table2, organisation_id & organisation_name & level_id & level_name对应于table1中创建的值。
  • 场景3:我创建了2个字段(整数),并在table1中存储了organisation_id =“1”& level_id =“2”,然后我用PHP转换了1 & 2的含义。

我真的很感激你对什么是最佳实践的看法。

非常感谢

回答

0

最佳实践通常是将此实现为2个表 - 您的方案2最接近。

这可以确保应用程序依赖的所有数据都在数据库中,例如,可以轻松报告使用mysql客户端的情况。

但是,您的方案2描述了使用2个查询从数据库获取数据,但基于上面描述的内容,应该可以仅使用一个 - 表中的level_id连接。

create table organisations (
    org_id integer, 
    org_name varchar(255), 
    level_id integer); 

create table levels (
    level_id integer, 
    level_description varchar(255)); 

在实践中你指定的主键,确定不能为null等栏目,但希望:

如果我正确理解你的要求,你可以有2个表像下面这样做上面给出了一些关于哪些数据在哪个表中的想法。

然后让所有组织名单和水平,他们都可以运行:

select org_name, level_description 
from organisations 
join levels on organisations.level_id = levels.level_id; 

我发现它的往往值得获得SQL在MySQL客户端的工作拷贝它,适应它的前PHP程序。

+0

感谢您的反馈!我很感激。我将使用连接查询来查找第二个场景。 – 2014-12-13 06:18:43

0

的另一件事想到的就是这个数据库将有多少项包含。大量的条目意味着整数列类型将以不必要解释PHP代码中的值为代价节省空间。

但还记得唐纳德克努特的话,“过早优化是万恶之源。”因此,不要花太多时间在这一个设计决定上苦苦挣扎,而不是确保所有需要存储的信息都是从一开始就存在的。

+0

我创建了PHP应用程序谁将管理一个潜水中心。所以我认为一年后潜水中心应该有很多顾客......这就是为什么我现在想到最好的做法。所以你会推荐整数和PHP来解释这个值? – 2014-12-13 04:09:11