데이터를 본격적으로 저장하는 곳이 테이블입니다.
👇테이블 예시
필드 혹은 속성 혹은 프로퍼티
👇필드 이름 영역
👇first_name column
(ex. 데이터 종류.. 데이터 타입.. 데이터 크기 등)
데이터의 종류에 따라 한 스키마 안에서 다른 테이블에 저장됩니다.
그리고 한 테이블 안에서 각 필드의 기준에 맞게 데이터가 저장이 됩니다.
테이블의 필드는 각각 명확한 기준의 데이터 유형과 데이터 크기를 요구합니다.
따라서, 하나의 column은 동일한 데이터 타입을 공유합니다.
데이터들에게 부여되는 고유번호입니다.
(상품번호, 학번, 주문번호와 같은 개념)
보통 INT 타입에 Auto_Increment 속성을 지니고 있으며
id라는 이름의 필드에 지정됩니다.
id 필드 생성 예시 (sequelize 사용)
//sequelize 모듈 불러오기
const Sequelize = require('sequelize');
//인스턴스(데이터베이스) 생성하기
const sequelize = new Sequelize(
'schemaName',
'userName',
'password',
{dialect: 'mysql', host: 'localhost'}
);
//product 이라는 테이블 생성
sequelize.define('product', {
// Primary Key가 될 아이디
id: {
type: Sequelize.INTEGER,
autoIncrement: true,
allowNull: false,
primaryKey: true
},
name: {
type: Sequelize.STRING,
allowNull: false
},
price: {
type: Sequelize.DECIMAL(13, 2),
allowNull: false
}
});
테이블 간의 관계는 relation, relationship, associations 등으로 불리며
관계의 종류에는 One-To-One, One-To-Many, Many-To-Many가 있습니다.
👇테이블 관계 생성 예시 (sequelize 사용)
One-To-One 관계
const User = sequelize.define('user', /* ... */);
const Cart = sequelize.define('cart', /* ... */);
User.hasOne(Cart);
Cart.belongsTo(User);
//고객은 하나의 장바구니만을 소지할 수 있으며,
//장바구니는 한 명의 고객에게만 속할 수 있습니다.
One-To-Many 관계
const User = sequelize.define('user', /* ... */);
const Order = sequelize.define('order', /* ... */);
User.hasMany(Order);
Order.belongsTo(User);
//고객은 하나 이상의 주문이 가능하지만
//하나의 주문은 한 명의 고객에게만 속합니다.
Many-To-Many 관계
자세한 내용은 여기
const Product = sequelize.define('product', /* ... */);
const Cart = sequelize.define('cart', /* ... */);
Product.belongsToMany(Order, { through: CartItem });
Cart.belongsToMany(Product, { through: CartItem });
// 장바구니에는 여러 가지의 상품을 담을 수 있습니다.
// 마찬가지로 하나의 상품 종류는 여러 장바구니에 담길 수 있습니다.
테이블이 많아질수록 관계가 많아지고 복잡해집니다!!
장바구니와 상품의 관계, Sequelize로 구현하기(다대다 관계) (0) | 2020.09.11 |
---|---|
MySQL Workbench 설치(MacOS)/맛보기 (0) | 2020.08.19 |
MySQL 데이터 CRUD 기본 (UPDATE, DELETE) (0) | 2020.08.18 |
MySQL 데이터 CRUD 기본 (INSERT, SELECT) (0) | 2020.08.18 |
MySQL 데이터베이스(schema) / 테이블 생성 - 2(수정) (0) | 2020.08.18 |
댓글 영역