Простая база данных sql сайта

Я вхожу в бэкэнд с postgresql и хотел бы знать, какая часть моего примера подходит для реальной базы данных веб-сайта, просто для хранения и последующего отображения на веб-сайте.

create table clients (
    id BIGSERIAL PRIMARY KEY,
    first_name VARCHAR(50) NOT NULL,
    last_name VARCHAR(50) NOT NULL,
    age INT CHECK (age >= 18) NOT NULL,
    email VARCHAR(70) UNIQUE NOT NULL,
    password VARCHAR(100) NOT NULL,
    card VARCHAR(70) DEFAULT ('undefined') UNIQUE NOT NULL,
    joined TIMESTAMP NOT NULL,
    country VARCHAR(50) DEFAULT ('undefined') NOT NULL,
    language VARCHAR(50) DEFAULT ('undefined') NOT NULL
);

insert into clients (first_name, last_name, age, email, password, joined, language) values ('Rustie', 'Matchell', 18, 'rmatchell0@mayoclinic.com', 'OSauq0z2suY', '2021-04-18 05:26:40', 'Kurdish');
insert into clients (first_name, last_name, age, email, password, card, joined, country, language) values ('Ulric', 'Hoggins', 20, 'uhoggins1@goo.gl', 'M4hnFLJ5XeP', '30243414381012', '2021-02-20 08:07:13', 'China', 'Mongolian');
insert into clients (first_name, last_name, age, email, password, card, joined, country, language) values ('Sephira', 'Bayly', 26, 'sbayly2@rambler.ru', 'INL57w6gXe', '5100138794351466', '2021-04-25 06:17:26', 'North Korea', 'Gujarati');
insert into clients (first_name, last_name, age, email, password, card, joined, country, language) values ('Hermine', 'Fassman', 29, 'hfassman3@smh.com.au', '1UX4TApQMEuV', '3552094428434244', '2021-06-18 06:48:54', 'Indonesia', 'Albanian');

РЕЗУЛЬТАТ:

 id | first_name | last_name | age |            email             |   password   |        card        |       joined        |        country        |  language
----+------------+-----------+-----+------------------------------+--------------+--------------------+---------------------+-----------------------+------------
  1 | Rustie     | Matchell  |  18 | rmatchell0@mayoclinic.com    | OSauq0z2suY  | undefined          | 2021-04-18 05:26:40 | undefined             | Kurdish
  2 | Ulric      | Hoggins   |  20 | uhoggins1@goo.gl             | M4hnFLJ5XeP  | 30243414381012     | 2021-02-20 08:07:13 | China                 | Mongolian
  3 | Sephira    | Bayly     |  26 | sbayly2@rambler.ru           | INL57w6gXe   | 5100138794351466   | 2021-04-25 06:17:26 | North Korea           | Gujarati
  4 | Hermine    | Fassman   |  29 | hfassman3@smh.com.au         | 1UX4TApQMEuV | 3552094428434244   | 2021-06-18 06:48:54 | Indonesia             | Albanian

1 ответ
1

serial / bigserial устарели, и вместо этого вы должны использовать generated always as identity пункт на столбце целого типа.

Похоже, вы храните пароль в виде открытого текста. Нет, пожалуйста, нет. Вам нужно прочитать о хешировании и солении паролей в целом, а затем Процедуры поддержки шифрования PostgreSQL.

Струна undefined не лучший способ представить отсутствующее поле; это внутриполосное значение, когда вам нужно внеполосное значение. Более разумный способ сделать для столбцов карты, страны и языка — разрешить им допускать значение NULL и присвоить им значение по умолчанию NULL.

Рассмотрите возможность объединения ваших вставок в один оператор вставки с несколькими строками в вашем values выражение.

  • Райндерин, можете ли вы объяснить, почему я должен использовать нулевые значения вместо «undefined»? Я провел небольшое исследование и обнаружил, что использование нулевых значений не рекомендуется. Что произойдет, если я не буду использовать нулевые значения в данном конкретном случае?

    — irtexas19

  • 1

    Использование столбцов, допускающих значение NULL, не рекомендуется. если вы знаете, что ваши данные для этого столбца всегда имеют определенную гарантию. Если необходимо представить «неопределенное» значение, то можно использовать столбцы, допускающие значение NULL.

    — Райндериен

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *