- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个非常简单的数据库。
想象一下,我已经安排了顾客和卖家。
客户可以请求某些产品的报价
将会有一个简单的表格,允许客户选择产品并提交报价。
现在,我应该创建表:“Quotation”并存储所有报价(带有 id_quotation..etc)吗?
谢谢大家
最佳答案
在不了解管理此数据库要求的所有业务规则的情况下,也许以下设计将有助于回答您的问题并解释该过程中的一些概念。
在数据库术语中,实体是我们想要收集和存储数据的人、地点或事物。从您的描述中我们已经可以看到两个实体:卖家和客户。这很重要,因为我们在概念上识别的实体本身就成为数据库表。
卖家表应包含仅适用于卖家的数据。因此,我们想要存储的卖家的品质(属性)成为卖家表中的列。卖家表中的每一行(记录)代表一个单独的卖家。每个卖家在卖家表中都有唯一标识,其主键列中存储有一个唯一值,我们可以将其命名为 seller_id。
此类表格的简化版本可能如下所示:
以类似的方式,客户表应包含仅适用于客户的数据。我们希望存储的客户品质(属性)成为客户表中的列。客户表中的每一行(记录)代表一个单独的客户。每个客户在该表中都有唯一标识,其主键列中具有唯一值,我们可以将其声明为 customer_id。
此表的简化版本:
我猜业务规则规定,任何客户都可以向任何卖家多次请求任意数量的产品......因为任何卖家肯定都希望获得尽可能多的销售额和客户!
我们如何表达和记录卖家和客户之间的互动(关系)?
这是通过一种新的实体来完成的:复合实体。它成为一个新表,拥有自己的主键,并包含 seller_id 和 customer_id 作为外键。该表中的外键将卖家表连接(关联)到客户表。
我们可以命名这个新的表格报价(如果这是您喜欢的名称)。该表的每一行旨在捕获和记录客户和卖家之间的每笔交易。此表的列(属性)是适用于客户和卖家之间交易的数据,例如销售金额或日期。
这个复合实体的一个非常简化的版本:
请注意,此表中存在的外键值必须已作为主键值存在于其各自的表中。也就是说,外键值不能输入到该表中,除非它已作为主键值存在于其自己的表中。这很重要,它被称为参照完整性 - 它确保没有客户从不存在的卖家处购买的记录等。
在上面的示例中,我们可以看到建筑商 B 向 Acme Construction 请求了 3500.00 美元的报价。然后他们在另一个时间再次请求报价,金额为 1800.00 美元。它还揭示了什么?所有现有客户都已订购了一些东西。 Acme Lumber 尚未进行任何销售(尚未)等。
这样的设计使数据库能够存储卖家和客户之间任意数量的交易。同样,它支持添加任意数量的新客户和卖家,即使他们尚未销售或购买任何东西。可以运行查询来显示哪些卖家销量最多或最少,等等。
祝你学业有成!
关于mysql - 我应该将 "quotation_request"作为数据库中的表存储吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32690265/
我正在尝试在Elasticsearch中返回的值中考虑地理位置的接近性。我希望近距离比某些字段(例如legal_name)重要,但比其他字段重要。 从文档看来,当前的方法是使用distance_fea
我是Elasticsearch的初学者,今天在进行“多与或”查询时遇到问题。 我有一个SQL查询,需要在Elastic中进行转换: WHERE host_id = 999 AND psh_pid =
智能指针应该/可以在函数中通过引用传递吗? 即: void foo(const std::weak_ptr& x) 最佳答案 当然你可以通过const&传递一个智能指针。 这样做也是有原因的: 如果接
我想执行与以下MYSQL查询等效的查询 SELECT http_user, http_req_method, dst dst_port count(*) as total FROM my_table
我用这两个查询进行测试 用must查询 { "size": 200, "from": 0, "query": { "bool": { "must": [ { "mat
我仍在研究 Pro Android 2 的简短服务示例(第 304 页)同样,服务示例由两个类组成:如下所示的 BackgroundService.java 和如下所示的 MainActivity.j
给定标记 like this : header really_wide_table..........................................
根据 shouldJS 上的文档网站我应该能够做到这一点: ''.should.be.empty(); ChaiJS网站没有使用 should 语法的示例,但它列出了 expect 并且上面的示例似乎
我在 Stack Overflow 上读到一些 C 函数是“过时的”或“应该避免”。你能给我一些这种功能的例子以及原因吗? 这些功能有哪些替代方案? 我们可以安全地使用它们 - 有什么好的做法吗? 最
在 C++11 中,可变参数模板允许使用任意数量的参数和省略号运算符 ... 调用函数。允许该可变参数函数对每个参数做一些事情,即使每个参数的事情不是一样的: template void dummy(
我在我从事的项目之一上将Shoulda与Test::Unit结合使用。我遇到的问题是我最近更改了此设置: class MyModel :update end 以前,我的(通过)测试看起来像这样: c
我该如何做 or使用 chai.should 进行测试? 例如就像是 total.should.equal(4).or.equal(5) 或者 total.should.equal.any(4,5)
如果您要将存储库 B 中的更改 merge 到存储库 A 中,是否应该 merge .hgtags 中的更改? 存储库 B 可能具有 A 中没有的标签 1.01、1.02、1.03。为什么要将这些 m
我正在尝试执行X AND(y OR z)的查询 我需要获得该代理为上市代理或卖方的所有已售属性(property)。 我只用 bool(boolean) 值就可以得到9324个结果。当我添加 bool
我要离开 this教程,尝试使用 Mocha、Supertest 和 Should.js 进行测试。 我有以下基本测试来通过 PUT 创建用户接受 header 中数据的端点。 describe('U
我正在尝试为 Web 应用程序编写一些 UI 测试,但有一些复杂的问题希望您能帮助我解决。 首先,该应用程序有两种模式。其中一种模式是“训练”,另一种是“现场”。在实时模式下,数据直接从我们的数据库中
我有一个规范: require 'spec_helper' # hmm... I need to include it here because if I include it inside desc
我正在尝试用这个测试我在 Rails 中的更新操作: context "on PUT to :update" do setup do @countdown = Factory(:count
我还没有找到合适的答案: onclick="..." 中是否应该转义 &(& 符号)? (或者就此而言,在每个 HTML 属性中?) 我已经尝试在 jsFiddle 和 W3C 的验证器上运行转义和非
import java.applet.*; import java.awt.*; import java.awt.event.*; public class Main extends Applet i
我是一名优秀的程序员,十分优秀!