- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试为豪华轿车公司建立数据库,但我对与客户,司机,关联公司和订单相关的地址应该做多少标准化工作感到困惑。
基本上,会员地址和驱动程序地址如下所示:
address_line_1,address_line_2,城市,州,邮政编码,国家/地区
我的问题来自订单和客户地址。
它们应如下所示:
address_line_1,address_line_2,城市,州,邮政编码,国家/地区,address_type_1(住所,公司),address_type_2(接送,送达-仅需要在订单中添加)。
因此,在所有四个表之间,除了两个字段在customer和orders表上不同之外,我在地址字段中具有相似之处。
我需要提到的是,每条记录都将使用唯一的ID进行标识。
例:
客户编号-10,000-99,999
订单ID-100,000-无限制
驱动程序ID-A1-A999(可能)
会员编号-1,000-9,999
这些仅是示例,因此无需花费大量时间来理解它们。
我应该使用多少个地址表来创建一个良好的规范化数据库?
在这一刻,我有三个想法:
一个包含所有字段的地址表,外加一个描述地址类型(客户,订单,会员,驱动程序)的表。不太喜欢这个。
两个地址表。一个带司机和会员,一个带客户和订单。对于第二个表,我将拥有and字段,对于客户而言,该字段始终为NULL。也不喜欢这个。
三个地址表。一种用于驾驶员和会员,一种用于客户,一种用于订单。没有未使用的字段使我认为这可能是比其他两个更好的选择。
有没有人对这三种选择甚至更好的选择有任何建议?
非常感谢。
更新:
不用担心表ID的编号系统。那只是一个例子。我仍然没有时间找出最好的编号系统。一旦我解决了地址问题,问题就会解决。
从马特的答案中,我很想让司机和会员表保留所包含的地址,然后以某种方式对客户表和订单表进行排序。
对于客户,我肯定需要一个Addresses表,因为客户可以将多个地址(家庭,企业1,企业2,喜欢的地方等)存储在他们的个人资料中,以便于访问。
我忘记提及订单表,这可能会改变问题的方程式。
对于任何订单,我都需要有一个提货和提货地点。但这可以是地址(街道地址)或机场。这意味着与街道地址相关的字段不能与机场特定的字段匹配。因此,我非常确定,在一个表内(全部带有其特定字段)有四个实体(pu_address,pu_airpot,do_address,do_airport)会使我留在未使用的空间中,并且会造成编程混乱。
例如:
用于接送字段:Address_type,Address_line_1,...,州,国家/地区,机场,航空公司,Flt编号,...
以及与接送相同的东西。
因此,我对Order表仍然有疑问,我不确定该如何前进。无论是否使用额外的表格,我都需要同时包括地址和机场上落地点。
更新
再次感谢马特。首先,是的,我将地址存储在单独的字段中。对于订单,问题仍然存在。我将举例说明什么类型的pu并使用豪华轿车服务。地址:伊利诺伊州芝加哥市Main Main 123号60640;机场:ORD,AA,123。我需要将所有这些字段以某种方式集成到表格中。
选项:
订单表
order_id,...,需要同时具有机场和地址字段的领取字段,具有机场和地址字段的下车字段。
此选项听起来仍然不正确。
接下来将有两个额外的表。一个用于地址(包括一个用于识别接机或送机的字段)。另一个将用于机场(具有用于pu的字段或也可以用于字段)。
我也不喜欢这个选项,因为我将需要执行两个查询才能只检索订单记录的信息。首先,我将检索订单信息,在知道接送服务的类型(机场或地址)之后,我将执行另一个查询以检索特定的接送服务。
所以,再次...我在做什么错?我想念什么吗?
是的,我一定会使用一些验证系统来确保地址正确无误。
最佳答案
我实际上是在SmartyStreets从事地址验证行业的,其中处理和存储地址是我们的专业领域。根据我的经验,我看到了许多与您一样的情况。
最初,我会根据您的记录类型来关注您的细分ID号。如果四种类型的记录(客户,驾驶员,关联公司,订单)存储在不同的表中,为什么需要ID范围限制? (更新:这实际上不是主要问题……)
现在,介绍一下数据库设计。理想情况下,您的设计应该反映核心域的操作(即,协调客户,订单,驱动程序等),而不是仅与地址数据耦合。地址可能很重要,但它们并不是您业务的核心业务。因此,根据我从您的原始帖子中收集的信息,我会立即犹豫将地址与实际记录分开存储。
尽管您在每个表中都有相似的字段,但是它们代表了不同的业务目的,并且您不会冒未用的,不必要的字段的风险。因此,问题不仅仅在于“我要创建多少个地址表”,而是什至只为地址创建任何表的问题。
尽管地址具有多种形式和形式,但对于豪华轿车公司来说,正确的地址信息以及规范化数据库很重要。 USPS(我假设您基于美国)证明某些供应商可以提供地址标准化服务。这称为CASS™认证。通过CASS™服务运行每个地址,您就完成了。这些地址看起来一样,具有完整的信息,并且也可以交付。我建议您用LiveAddress之类的东西开始搜索,它会在输入点验证地址,或者是CASS list scrubbing service这将立即验证一批地址(并警告您重复)。
更新:如果一个客户可能有多个地址,那么可以,我主张为此使用单独的表。但是,您仍然需要使用CASS对其进行标准化/验证,因此,如果需要,可以稍后取出重复项(此外,您将知道地址实际存在)。
因此,除此以外,请考虑将每个地址内联存储在与其关联的实际记录中(而不是在单独的表中)。
如有其他疑问或指示,我可以亲自提供帮助。
更新
关于从机场分隔地址:根据您的业务需求,这可能是有效的区分,但请记住,机场也有地址。您可以在表中添加一个字段来存储公司名称或地址指向的位置,例如“奥黑尔国际机场”。这可以巩固一些领域。另外,我建议您按组件(街道,城市,州,邮政编码等)将地址存储在单独的字段中。
关于database-design - 地址的数据库规范化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9243177/
我们使用 Azure 弹性池,生成多个客户端数据库和一个引用客户端数据库的主数据库。 我们已经拥有多个数据库,并且正在开发新版本的代码。我们使用 EF6 代码优先。当我们对模型进行更改(添加属性)时,
我们使用 Azure 弹性池,生成多个客户端数据库和一个引用客户端数据库的主数据库。 我们已经拥有多个数据库,并且正在开发新版本的代码。我们使用 EF6 代码优先。当我们对模型进行更改(添加属性)时,
我希望将一些信息分发到不同的机器上,以便在没有任何网络开销的情况下实现高效和极快的访问。数据存在于关系模式中,实体之间的关系是“加入”的要求,但根本不是写入数据库的要求(它会离线生成)。 我非常相信
我使用 GrapheneDB 来托管我的 neo4j 数据库 (db)。 问题 我有 N客户并且正在寻找自动分离他们的内容(他们独特的数据库)的方法,以便: 它不重叠数据 操作速度不受影响。 选项 1
当服务器开始工作(Tomcat)时,日志显示此错误: org.springframework.beans.factory.BeanDefinitionStoreException: Invalid b
我在 Oracle 数据库实例中按以下方式创建了一个触发器。 CREATE OR REPLACE TRIGGER after_logon_on_database AFTER LOGON ON DATA
原谅我的无知,我是数据库约定的初学者。 这是我的 SQLite 代码:(由我的数据库浏览器自动生成) CREATE TABLE `ResearchItems` ( `ID` INTEGER NO
是的是的是的,我已经在整个互联网上搜索过这个问题。一些结果发现,甚至来自 Stackoverflow。但是他们中的大多数人说“你应该自动加载数据库”,或者“parent::__construct();
我正在创建一个 Mac 应用程序,它将一些数据保存到 SQLite 数据库中。问题是:当我关闭数据库并再次打开时,数据不存在了。这是我的代码: NSString *sql = [NSString st
我正在建立一个网站,我打算发布各种帖子,比如教程、文章等。我打算用 php 来管理它,但是当涉及到存储每个帖子的内容时,将要显示的文本,更好的选择是:使用单独的文本文件还是将其添加为数据库中的每个条目
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 3 年前。 Improve this qu
对不起,这个关键字对我来说没有任何意义...有人可以给我一个定义吗? 提前致谢... 最佳答案 这是一个品牌。 http://pervasive.com/这是他们的数据库产品的链接 http://ww
我已经在 docker 版本 1.10.1 的 docker 镜像中安装了 PostgreSQL 9.4.6。根据这张官方图片: https://github.com/docker-library/p
当我的 android 应用程序尝试读取 android 短信数据库时,我遇到了这个崩溃。读取android短信数据库的代码类似于下面的代码 fragment : String SMS_URI = "
我有一个 public kit repo,我推送了 v1.0.3 并具有以下结构 go -database --database.go --go.mod --go.sum 我需要它 require g
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 9 年前。 Improve this qu
我们正在使用MySQL数据库在Go中创建一个Web应用程序。我们的用户一次只能拥有一个活跃的客户端。就像Spotify一样,您一次只能在一台设备上听音乐。为此,我制作了一个映射,将用户ID和作为其值的
我已经尝试在 PostgreSQL 中创建数据库好几天了,遇到了几个问题,但似乎卡住了。 我在 PostgreSQL 中手动创建了一个名为 postgres_development 的数据库,因为 b
我正在创建一个 iMessage 应用程序,它需要连接到与我的常规应用程序相同的数据库。 我调用 FirebaseApp.configure() 并对用户进行身份验证,但出于某种原因,在所有 Data
就像std::unordered_map但所有数据都应存储在磁盘上而不是内存中。 按照我的理解,应该做两部分:索引和存储。我已经学习了一些关于索引的数据结构,比如 Linear-Hash 或 B-Tr
我是一名优秀的程序员,十分优秀!