PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como construir tabelas relacionais em um mercado bilateral


Você precisa entender a maneira básica de registrar informações relacionalmente, ou seja, em tabelas.

Encontrando tabelas suficientes

Basta ter uma tabela base para cada declaração que você precisa para descrever uma situação de negócios:
User(user_id,name,...)
    // User [user_id] is named [name]
Contacted(contact_id,item,offer_id)
    // user [contact_id] was contacted re item [item] offered by user [offer_id]
...etc...

Os parâmetros da instrução são as colunas da tabela.

Se você quiser falar sobre as partes de algo que você pensa como tendo várias partes (heterogêneas ou homogêneas), isso significa apenas que algumas declarações envolverão uma coisa e suas partes:
table request(request_id,start_date,end_date,...)
    // [request_id] goes from [start_date] to [end_date] and ...
table requested(request_id,item_id,person_id,...)
    // person [person_id] requested item [item_id] in request [request_id]

O que há em uma tabela

O valor de uma tabela base são as linhas que tornam sua declaração verdadeira. (Cada subexpressão de consulta também tem uma declaração, e seu valor são as linhas que tornam sua declaração verdadeira.)

Não confunda instruções de tabela com regras de negócios. As regras de negócios declaram verdades. Mas uma declaração de tabela é uma declaração que alguma tupla torna verdadeira (e vai para a tabela) ou falsa (é deixada de fora da tabela). Todas as declarações verdadeiras e falsas das tabelas dizem tudo o que você precisa saber sobre o negócio. As regras de negócios nunca irão contradizê-los. (Já que são sempre verdadeiras.)

Reorganizando para melhores tabelas

Uma chave é um conjunto de colunas das quais todas as outras colunas são funções, mas nenhum de seus subconjuntos possui essa propriedade. Uma tabela pode ter mais de uma chave.

Para tornar um banco de dados mais fácil de atualizar e consultar, você deve separar certas instruções que são outras instruções unidas por AND. Divida até que cada instrução consista em uma instrução apenas sobre colunas-chave com AND com instruções desta forma:
[my_column]=my_function([key_k_column_1],[key_k_column_2],...)

onde key_k_column_1,... são colunas da mesma chave key_n.

(Tal tabela está "na quinta forma normal" e o tópico é "normalização".)