AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / 问题

Perguntas[database-design](dba)

Martin Hope
Carl Schmidt
Asked: 2025-01-23 08:48:39 +0800 CST

SQL Server: Como implementar relacionamento de 3 vias com cascatas

  • 5

Este é o esquema com o qual estou trabalhando:projeto de banco de dados

Aqui está o DBML para recriar em https://dbdiagram.io/d :

Table University {
  ID integer [primary key]
}

Table Professor {
  ID integer [primary key]
  UniversityID integer [primary key, ref: > University.ID]
}

Table Class {
  ID integer [primary key]
  UniversityID integer [primary key, ref: > University.ID]
  ProfessorID integer [null]
}

Ref: Class.(ProfessorID, UniversityID) - Professor.(ID, UniversityID)

Meu objetivo:

  • Uma universidade pode ter várias turmas e professores.
  • Uma classe pode ter um ou nenhum professor.
  • A exclusão de uma universidade exclui todos os seus professores e turmas
  • Excluir um Professor define Class.ProfessorID como NULL

O último objetivo está nos causando problemas. O SQL Server impede a adição de outra restrição de chave estrangeira em cascata devido a múltiplos caminhos em cascata, e um gatilho não pode funcionar porque:

  1. a consulta de exclusão é rejeitada devido à restrição de chave estrangeira no Professor, portanto, um gatilho FOR DELETE nunca será executado
  2. O SQL não pode criar um INSTEAD OF DELETE devido ao relacionamento em cascata com a Universidade

Como posso conseguir isso?

database-design
  • 1 respostas
  • 49 Views
Martin Hope
Marlon Brando
Asked: 2025-01-22 21:48:54 +0800 CST

Essa tabela está no BCNF?

  • 6

No livro que estou lendo atualmente, esta tabela é mencionada como um exemplo do que podemos fazer se uma tabela atende ao BCNF, mas ainda tem redundâncias. Em seguida, menciona que uma solução são matrizes. Mas essa tabela está mesmo no BCNF? Não há dependências funcionais de Language -> PersNr e de Programming -> PersNr. Ambos os atributos não são superchaves, pois não identificam as linhas de forma única. Então, eles quebram o BCNF na minha visão. Ou estou entendendo errado alguma coisa?

insira a descrição da imagem aqui

database-design
  • 1 respostas
  • 26 Views
Martin Hope
Amessihel
Asked: 2024-12-24 00:22:44 +0800 CST

Como criar adequadamente um histórico de associação entre vários grupos?

  • 5

Estou procurando projetar um aplicativo (Python com sqlite) que lide com alguns colaboradores que se movem entre vários grupos ao longo do tempo.

Meu design atualmente se parece com (PK em negrito, FK em itálico, ambos se um FK fizer parte do PK):

  • Grupo( Id , Nome)
  • Contribuidor ( ID , Nome, Primeiro Nome)
  • Ação( ActionId , Nome)
  • ContributorAction ( ContributorId , ActionId , Data)
  • Associação ( GroupId , ContributorId , StartDate , EndDate )

Meu objetivo é manter um histórico de associações para recuperar o grupo de associação correto de um colaborador no momento de uma determinada contribuição.

Fazer isso envolve o uso de colunas de data em uma chave primária (tabela Membership). No entanto, EndDatepode ser NULLpara a associação atual de um colaborador, e eu li que isso pode não ser uma prática boa (ou mesmo permitida).

Perdi alguma coisa aqui para obter pelo menos o design 3NF?

database-design
  • 1 respostas
  • 20 Views
Martin Hope
ncmprbl
Asked: 2024-12-06 01:57:16 +0800 CST

Arquitetura de banco de dados com extensão em mente

  • 6

Exposição

Digamos que nosso sistema tenha usuários e alguns jogos . Vamos chamar esses jogos de A , B e C.

Para simplificar, nossas tabelas iniciais ficam assim:

CREATE TABLE IF NOT EXISTS users (
    id SERIAL PRIMARY KEY
);

CREATE TABLE IF NOT EXISTS games (
    id SERIAL PRIMARY KEY
);

Problema

Sempre que jogamos esses jogos e os terminamos, temos que registrar estatísticas relacionadas ao jogo para o usuário específico. Por exemplo, para o jogo A, temos que registrar total_jumps e total_crouches porque a mecânica do jogo permite tal acumulação, no entanto, os jogos B e C podem exigir que registremos outros campos total_* (embora o prefixo total_ não seja necessário). Como armazeno essas informações?

Estou preocupado com a solução para esse problema. Eu criei 2 abordagens:

Solução 1

Tenha uma única tabela para isso:

CREATE TABLE IF NOT EXISTS statistics (
    user_id SERIAL REFERENCES users (id) ON DELETE CASCADE,
    game_id SERIAL REFERENCES games (id) ON DELETE CASCADE,
    fields JSONB,
    PRIMARY KEY (user_id, game_id)
);

Dessa forma, deixamos para o nível do aplicativo analisar dados arbitrários provenientes da coluna de campos .

Solução 2

Tenha várias mesas, uma para cada jogo:

CREATE TABLE IF NOT EXISTS A_statistics (
    user_id SERIAL PRIMARY KEY REFERENCES users (id) ON DELETE CASCADE,
    total_jumps INTEGER,
    total_crouches INTEGER
);

Pessoalmente, a solução #2 parece melhor para mim, mas... esse problema ainda me incomoda muito. Como se eu estivesse esquecendo de algo, porque nenhuma das opções torna a extensão (adicionar novos jogos) mais fácil? Digamos que adicionamos os jogos D , E e F . Ambas as soluções exigem que, de alguma forma, manipulemos campos específicos (no nível do aplicativo) necessários para esses jogos. Isso é algo com o qual eu simplesmente tenho que me conformar? Ou há uma terceira solução melhor para isso que eu simplesmente não vejo?

database-design
  • 2 respostas
  • 60 Views
Martin Hope
J. Mini
Asked: 2024-12-01 09:30:15 +0800 CST

As tabelas de fatos devem ser projetadas para agregação?

  • 5

Tenho lido sobre os índices columnstore do Microsoft SQL Server recentemente e fiquei preocupado que minha experiência não corresponda à do setor. Os índices columnstore são projetados para tornar os agregados fáceis. É dito com muita frequência que, por esse motivo, eles são ideais para tabelas de fatos.

Isso me deixa desconfortável. Na minha experiência, tabelas de fatos não são agregadas . A lista de colunas para cada tabela de fatos que já fiz tem o formato "chave primária seguida por várias colunas de dimensão, seguidas por cada bit de informação que armazenamos sobre a chave primária". Elas então são despejadas em alguma ferramenta de BI como PowerBI ou ThoughtSpot, para que pessoas não técnicas possam filtrar com base nas dimensões e descobrir o que quiserem saber. Elas podem agregar de tempos em tempos, mas esse certamente não é o uso principal da tabela. Espero que essas tabelas tenham bem mais de 100 colunas.

O design da tabela e o padrão de acesso que estou descrevendo são o que se espera de uma tabela de fatos? Ou estou descrevendo um tipo de tabela totalmente diferente, cujo nome desconheço?

database-design
  • 1 respostas
  • 27 Views
Martin Hope
mowalid0
Asked: 2024-11-22 16:30:22 +0800 CST

Perguntas no projeto de banco de dados coerce da faculdade

  • 5

Agora estou criando um BD de sistema bancário que é mais conveniente no caso da entidade de conta para torná-la a chave primária composta de chaves estrangeiras (id da agência, id do cliente, id do serviço, quatro inteiros gerados para exclusividade) para serviço de contexto como empréstimo etc., ou torná-los apenas chaves estrangeiras normais. Se você puder fornecer um caso mais geral em que a chave composta seja o melhor caso de uso

database-design
  • 1 respostas
  • 24 Views
Martin Hope
it's not me
Asked: 2024-09-27 19:38:35 +0800 CST

Por favor me ajude a entender esse problema sobre cardinalidade

  • 7

Eu e meu amigo estamos criando um diagrama ER para uma liga profissional de futebol. Somos muito novos em banco de dados, então não temos certeza se tudo o que fazemos está correto.

Ao criar um relacionamento entre um gerente e um clube, ele fez isso:diagrama

Estou bastante confuso sobre o porquê dos 2 relacionamentos managedBy e signsWith serem Muitos para Muitos. Meu amigo disse que vários gerentes podem gerenciar vários clubes, um para um de cada vez. Mas não deveria ser Um para Um? Já que a qualquer momento, um clube só pode ter um único gerente gerenciando-o e um gerente só pode ter um único clube para gerenciar (não nos importamos com o gerente assistente neste caso); a mesma coisa sobre o relacionamento signsWith.

Então, qual de nós está certo?

database-design
  • 1 respostas
  • 179 Views
Martin Hope
KoalaMaybe
Asked: 2024-05-17 09:14:53 +0800 CST

Como os bancos de dados colunares são mais rápidos para consultas?

  • 4

Por que tantas pessoas preferem bancos de dados colunares? No meu entender, as pessoas preferem bancos de dados colunares porque são mais rápidos para consultas devido ao fato de que a CPU seria capaz de armazenar em cache os próximos valores de forma previsível.

database-design
  • 3 respostas
  • 58 Views
Martin Hope
siunhanbumpbump
Asked: 2024-03-27 14:19:34 +0800 CST

Maneira "correta" de projetar o registro do histórico

  • 5

Atualmente tenho uma entidade Ticket , agora pretendo criar outra entidade chamada TicketHistory assim como a imagem abaixo para acompanhar as alterações que aconteceram na entidade Ticket , gostaria de saber se essa é a maneira "correta" de projetar este caso? insira a descrição da imagem aqui

database-design
  • 1 respostas
  • 17 Views
Martin Hope
Ravin Laheri
Asked: 2024-03-18 18:38:21 +0800 CST

Como criar um id único no flutter para adicionar no banco de dados

  • 7

Como criar um id único no Flutter para adicionar ao banco de dados no firebase?

database-design
  • 1 respostas
  • 33 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve