如果我要构建一个CRM Web应用程序作为会员服务销售,那么设计和部署数据库的最佳方法是什么?
我是否有一个数据库,每个表包含100个记录,或者为不同的客户端部署多个数据库?
使用单个数据库真的是一个问题,因为我相信像Flickr这样的网站会使用它们吗?
我有一个特别困难的业务约束,我想在数据库级别强制执行.这些数据本质上属于财务数据,因此必须保护其不存在与第n度的不一致 - 不要信任业务层.我稍微松散地使用"时间"这个词,这意味着我打算控制一个实体如何能够随着时间而改变.
对细节进行着色,这是设计:
这是一个精简的数据定义:
CREATE TABLE Invoices
(
InvoiceID INT IDENTITY(1,1) PRIMARY KEY,
)
CREATE TABLE Fees
(
FeeID INT IDENTITY(1,1) PRIMARY KEY,
InvoiceID INT REFERENCES Invoices(InvoiceID),
Amount MONEY
)
Run Code Online (Sandbox Code Playgroud)
您会注意到发票的"可锁定"性质未在此处表示; 如何表达它 - 以及它是否需要直接表示 - 仍然是一个悬而未决的问题.
我开始相信这是那些无法转换为域密钥正常形式的安排之一,尽管我可能错了.(毕竟,真的没有办法说出来.)尽管如此,我仍然对高度规范化的解决方案抱有希望.
我碰巧在SQL Server 2008上实现了这个(语法可能是一个暗示),但我是一个好奇的人,所以如果有其他DBMS的解决方案,我也很想听到这些.
mysql> select 0.121='0.121';
+---------------+
| 0.121='0.121' |
+---------------+
| 1 |
+---------------+
Run Code Online (Sandbox Code Playgroud)
是否持有其他数据库number='number'是true?
假设一个名为'log'的表,其中有大量记录.
应用程序通常通过简单的SQL检索数据:
SELECT *
FROM log
WHERE logLevel=2 AND (creationData BETWEEN ? AND ?)
Run Code Online (Sandbox Code Playgroud)
logLevel并且creationData有索引,但记录数量使得检索数据需要更长的时间.
我们如何解决这个问题?
基本上,我要实现的是以下各项的组合:
Slick 3.0.0数据库不可知论 和 Slick 3可重用的通用存储库
实际上,我做了很多尝试,但是根本无法使用。
abstract class BaseModel[T <: slick.lifted.AbstractTable[_]](query: TableQuery[T], val driver: JdbcProfile, val dbTableName: String)
{
lazy val all: TableQuery[T] = TableQuery[T]
import driver.api._
def createTable = all.schema.create
def dropTable = all.schema.create
abstract class BaseTable[B](val tag: Tag) extends Table[B](tag, dbTableName)
{
def id = column[Long]("id", O.PrimaryKey, O.AutoInc)
}
}
Run Code Online (Sandbox Code Playgroud)
现在,这里已经有一个问题:
def createTable = all.schema.create和dropTable...-> 相同,schema在这里无法解决,尽管我之前已导入驱动程序。
但是,当我将其子类化时,会出现一个更大的问题:
这是代码
class NodeModel(driver: JdbcProfile, dbTableName: String) extends BaseModel[NodeTable](TableQuery[NodeTable], driver, dbTableName) {
val dbDriver = driver …Run Code Online (Sandbox Code Playgroud) sql-server ×3
sql ×2
comparison ×1
constraints ×1
crosstab ×1
generics ×1
mysql ×1
oracle ×1
saas ×1
scala ×1
slick ×1
temporal ×1