标签: database-schema

如何构建用于搜索后过滤的数据库架构

我想为电子商务搜索功能添加搜索后过滤。目前数据存在如下:

Products(带有 BrandID) Brands(产品表中 BrandID 的外键) ProductDietType(产品和饮食类型的联结表) DietTypes(各种产品饮食类型) ProductDepartment(产品和部门的联结表) 部门

我想添加搜索后过滤器,用户可以选择多个品牌、部门、饮食类型来缩小结果集。

我能想到的就是这样编码:

如果(无)...如果(品牌)...如果(部门)...如果(饮食类型)...如果(品牌和部门)...如果(品牌和饮食类型)...如果(部门和饮食类型) ... 如果(品牌和部门和饮食类型) ...

我知道这是错误的。因为它的可扩展性不太好:每次添加新的过滤器时,代码分支的数量都会增加一倍。

您将如何进行整齐且可扩展的编码 - 因此,如果我想添加另一个过滤器 - 例如原籍国 - 我可以相对轻松地做到这一点。

我使用 C# 进行编码并使用 SQL Server 2008。

非常感谢任何帮助。

乔恩

database database-design database-schema data-structures

2
推荐指数
1
解决办法
1306
查看次数

在 Google Bigquery 中,NULL 字段占用空间吗?

我正在设计一个要放入 Google Bigquery 的事件模式。当前的设计使得许多字段通常为NULL,例如来自移动应用程序的事件不会有URL 或浏览器信息,而来自网站的事件不会有硬件规格。此外,当前模式中的许多信息都是相当静态的,不需要包含在每个事件中。

如果事件中的字段保留为 NULL,它们是否仍会占用表中的空间?我想知道是否以某种方式结束这些事件会更好。是否有存储重复信息的最佳实践?

schema database-schema google-bigquery

2
推荐指数
1
解决办法
1423
查看次数

是否可以重命名列?

是否可以发出类似的东西

RENAME COLUMN col1 col2
Run Code Online (Sandbox Code Playgroud)

在 Google Cloud Spanner 中?从 DDL 来看这是不可能的;如果不是,这是 Beta 版的设计选择还是限制?

database database-schema google-cloud-platform google-cloud-spanner

2
推荐指数
1
解决办法
3336
查看次数

R 使用 dplyr 或 RPostgreSQL 访问架构下的 redshift 表

我正在尝试使用我的 Mac 连接到 Redshift 中的数据库。
我设法使用 dplyr 和 RPostgreSQL 连接到 Redshift,但即使我可以看到所有可用的表(无论架构如何),我也无法访问其中任何一个,因为它们都位于不同的架构下。
我已经尝试了各种语法来指定模式,但我没有得到任何结果。

这是我的 RPostgreSQL 代码:

library(RPostgreSQL)
drv <- dbDriver("PostgreSQL")
postgre.conn <-dbConnect(drv, 
    host="localhost", port="XXXX", dbname="redshiftdb", 
    user="XXXX", password="XXXX")
dbListTables(postgre.conn)
Run Code Online (Sandbox Code Playgroud)

这列出了所有表,无论架构如何。

我可以看到特定模式下的所有表,因此这有效:

dbGetQuery(postgre.conn,
       "SELECT table_name FROM information_schema.tables
       WHERE table_schema='my_schema'") 
Run Code Online (Sandbox Code Playgroud)

但我无法使用以下任何命令访问 my_schema.my_table 中的数据:

dbSendQuery(postgre.conn,"SELECT * FROM my_table LIMIT 10")
dbSendQuery(postgre.conn,"SELECT * FROM my_schema.my_table LIMIT 10")
dbSendQuery(postgre.conn,"SELECT * FROM my_table WHERE table_schema='my_schema' LIMIT 10")
dbSendQuery(postgre.conn,"SELECT * FROM c("my_schema", "my_table") LIMIT 10")
Run Code Online (Sandbox Code Playgroud)

同样,这是我的 dplyr 代码:

library(dplyr)
dplyr.conn <- src_postgres(host="localhost", port="XXXX", 
    dbname = "redshiftdb", user = "XXXX", …
Run Code Online (Sandbox Code Playgroud)

r database-schema rpostgresql amazon-redshift dplyr

2
推荐指数
1
解决办法
1265
查看次数

数据存储浏览器建模

我有一个连接对象浏览器,我希望允许用户查看他们连接到的各种数据源。对象的查看器看起来像这样:

  • 连接:Remote.1234.MySQL(3级源)

    • 数据库:销售
      • :用户
        • 字段:名称 -- CHAR(80)
        • 字段:年龄 -- INT32
      • :产品
        • ...
      • :购买
        • ...
    • 数据库:其他
      • ...
  • 连接:Remote.abc.ElasticSearch(2级源)

    • 索引:库存
      • 字段:ID——整数
      • 字段:产品 -- STRING
      • ...
  • 连接:Local.xyz.MongoDB(3级源)

    • 数据库:邮件
      • 集合:用户
        • 字段:邮箱 ID -- INTEGER
        • 字段:名称 -- STRING
      • 收藏:文件
        • ...
  • 连接:Local.xyz.SQLServer(4级源)

    • 数据库:主要
      • 架构:公共
        • :用户
          • 字段:名称 -- STRING
    • 数据库:历史
      • ...

换句话说,“源”是具有已知数量的级别和每个级别的已知“名称”的层次结构。虽然整个层次结构是可变的,但任何给定源的层次结构将始终具有相同的级别数和名称。建立关系模型的好方法是什么?我的想法是:

联系:

  • ID
  • 主持人
  • (其他详情)

来源类型:

  • ID
  • 姓名

源类型级别映射:

  • 源类型ID
  • 级别(整数)
  • 姓名 …

database relational-database hierarchical-data database-schema

2
推荐指数
1
解决办法
494
查看次数

隐藏SQL Server数据库架构的方法?

有没有办法模糊SQL Server上的数据库架构?

如果我在客户端站点上安装了SQL Server Express,是否有办法模糊架构和数据,以便其他人无法进入并学习架构以便从中提取数据并将其提取到另一个产品中?

obfuscation sql-server-express database-schema

1
推荐指数
2
解决办法
2431
查看次数

没有足够的值错误消息Oracle

我在尝试插入记录时收到错误消息,我已经仔细检查了所有值是否存在且数据类型是否一致.有人可以帮我发现问题.

CREATE SEQUENCE EMP_ID_SEQ
START WITH 300
INCREMENT BY 1;

CREATE TABLE STAFF(
EMP_ID NUMBER NOT NULL,
EMP_NAME VARCHAR2(20),
EMP_DOB DATE,
EMP_TEL VARCHAR2(20),
EMP_EMAIL VARCHAR2(50),
EMP_ADDR VARCHAR2(100),
EMP_HIREDATE DATE,
EMP_ENDDATE DATE,
EMP_SALARY NUMBER(7,2),
EMP_SUPERVISOR NUMBER,
 JOB_CODE NUMBER,
 BRA_CODE NUMBER);

 CREATE TRIGGER EMP_ID_TRG
BEFORE INSERT ON STAFF
FOR EACH ROW
BEGIN
SELECT EMP_ID_SEQ.NEXTVAL
INTO :NEW.EMP_ID
FROM DUAL;
END;
/

INSERT INTO STAFF VALUES ('Jaime Stark',to_date('29/04/1951','dd/mm/YYYY'),'607 4432-1059','Donec.fringilla.Donec@necurnaet.ca','P.O. Box 891, 5837 Enim Avenue',to_date('16/06/2010','dd/mm/YYYY'),NULL,41695,NULL,1,1);
Run Code Online (Sandbox Code Playgroud)

sql oracle oracle11g database-schema

1
推荐指数
1
解决办法
3286
查看次数

如何构建db表来存储范围,如0; 20; 40; 60; 80或0; 50; 100; 150; 200; 250; ...等等

我想将下面的范围存储在一个表中,template01中的项目数是6,第二个是4.我们如何构造表来存储这些信息.将这些值显示为逗号分隔或为每个范围值指定一列将是我的最后一个选项.你能帮忙知道如何构建表/表来存储下面提到的信息.

Template01      0      10       20         30      40       50
Template02      0      50      100        150
Template03      0     100      200        300     400      500      600 
Run Code Online (Sandbox Code Playgroud)

基本上,我想将这些范围存储为模板,并在以后使用它来说明行李重量是否为0-10,每公斤花费5美元,如果10到20,则每公斤花费4.8美元等

这是模板的使用方式,

Domain: XYZ
Template01      0      10       20         30      40       50
Increment01%   125%    120%      115%       110%    105%    100%

Domain: ABC, am using or picking the same template 'Template01' but Increment% 
will be different for different domain, hence

Template01      0      10       20         30      40       50
Increment02%   150%    140%      130%       120%    110%    100%
Run Code Online (Sandbox Code Playgroud)

想法是,我想存储减肥模板,后来我想与不同的增量%相关联.因此,当用户选择权重中断模板时,可以显示适用于该模板的所有增量%值,以供用户选择一个.

Template01      0      10       20         30      40       50 …
Run Code Online (Sandbox Code Playgroud)

oracle database-design relational-database database-schema

1
推荐指数
1
解决办法
662
查看次数

关系模型与逻辑数据模型

据我所知,数据库设计过程按以下顺序进行:

Conceptual Data Model -> Logical Data Model -> Physical Data Model
Run Code Online (Sandbox Code Playgroud)

有人可以澄清关系模型如何适用于这个过程吗?

谢谢

database-design relational-database database-schema

1
推荐指数
1
解决办法
361
查看次数

为什么在rake db:schema:load期间初始化Factory Girl

我已经从Rails 3.2升级到Rails 4.1.12并且我收到了一条错误消息

rake db:drop db:create db:schema:load RAILS_ENV=test
Run Code Online (Sandbox Code Playgroud)

错误消息是由Factory Girl导致缺少表的SQL错误.但是为什么工厂女孩应该初始化db:schema:load

有趣的是,如果我降级到Rails 4.1.11,问题就会消失.

rake ruby-on-rails database-schema factory-bot

1
推荐指数
1
解决办法
451
查看次数