Ai là người thiết kế database khi bắt đầu project

Chào các bạn, khi BA phân tích hệ thống theo yêu cầu của khách xong, thì ai sẽ là người trực tiếp thiết kế database cho team backend code vậy? Người trực tiếp vẽ ERD, chọn thực thể, thiết kế bảng cho đến việc dùng SQL server studio, phpMyAdmin, navicat, … tạo bảng, cột và cuối cùng là deploy database lên AWS, Azure, … Là BA hay do team backend kiêm việc này luôn? Với lại em thấy backend bây giờ đa số dùng ORM vậy có cần giỏi SQL để viết query hay cần đi học thêm chứng chỉ gì liên quan đến database không? Em cảm ơn!

2 Likes

cái này là do nguồn lực, quản lý dự án hay lead chỉ định chứ có nhất thiết phải là ai
mỗi công ty có resource khác nhau, mỗi project cũng lớn nhỏ khác nhau, làm gì có 1 cái công thức nào chứ

chứng chỉ có thể không cần, miễn làm được việc là được, còn công ty nào nổi hứng lên đòi thì tới đó coi lại
còn về ORM hay query builder hay là thư viện gì giúp cho mình khỏi cần phải viết sql. nó chỉ là công cụ, kiến thức về database mới là quan trọng, không có kiến thức thì cho đồng tool đó cũng chẳng giúp gì được vì cũng chẳng biết làm gì với đồng tool đó

7 Likes

ORM chỉ đơn giản hóa những điều tự nó đã đơn giản rồi.

4 Likes

Thường, đội architect hoặc kỹ sư sẽ là người chịu trách nhiệm cho việc này (tùy theo nhân sự của đội phát triển).
Với các domain model nhỏ, đội kỹ sư hoàn toàn có thể tự thiết kế được. Với các model phức tạp hơn, đôi khi cậu sẽ cần architect hoặc principal engineer, database administrator kết hợp cùng để thiết kế, nếu nhân sự bên cậu có vai trò này. Nếu nhân sự bên cậu không có, hẳn nhiên đội kỹ sư sẽ phải lo tất :smile:
Tuy nhiên, thiết kế thường là công việc cần phải thảo luận nhiều, nên chắc chắn không chỉ có 1 cá nhân duy nhất đảm nhận công việc này khi domain model của cậu rất phức tạp.

:smile:
Cậu tham khảo câu trả lời trước nha :smile:

Tool kết nối tới SQL được quyết định bởi các kỹ sư, họ hoàn toàn có quyền chọn tool mà họ thấy dễ dàng sử dụng.

Thao tác này là được thực hiện bởi kỹ sư, hoặc nếu bên cậu có 1 người chuyên chịu trách nhiệm operation, người đó sẽ thực hiện thao tác này.
Manual cho operation cũng sẽ do kỹ sư lo liệu.

Thao tác này cũng là kỹ sư nốt. BA không có đủ kiến thức cho việc này đâu :smile:

Nếu cậu không có kiến thức cơ bản về DB mà cậu dùng:

  • Cậu sẽ không bao giờ optimize được hệ thống của cậu :smile:
    ORM có tiện thật, nhưng cậu sẽ gặp rất nhiều performance issue nếu cậu không bao giờ sử dụng plain query.
    Cậu cũng hoàn toàn không biết practice khi query, cũng không thể design high performance DB schema được :smile:
  • Nếu cậu không biết viết query, thì sao cậu test/phân tích lỗi từ dữ liệu được đây? :smile:

Cậu không nhất thiết phải học chứng chỉ DB nào đâu, mặc dù nó chắc chắn sẽ giúp cậu có kiến thức được hệ thống hơn :smile:

11 Likes

vì câu này nên phải chen chân vào “chém” một chút.

không mâu thuẫn với cách nói của bác @library

nhưng mọi người cần phân biệt “chức danh” (BA, PM, SE) và “trách nhiệm công việc” (responsibility).

tùy công ty, tùy vào nguồn lực của đội dự án, mà 1 BA có thể chỉ cần “vẽ” ERD, database (trên giấy, trên excel, trên draw.io) nhưng cũng có dự án, mà BA sẽ phụ trách quản lý cái database luôn. trong tình huống này họ sẽ thầu luôn việc database administration, design và implement database schema, cũng như quản lý các instance database (server nào dùng cho giai đoạn dev, server nào dùng cho giai đoạn test, giai đoạn nào dùng cho production)

8 Likes

Oh, cảm ơn chia sẻ của cậu nhé! :smile:

Tại tớ chưa bao giờ làm việc với BA chịu trách nhiệm design + implement + DBA admin cả :smile: Đó thường là công việc của 3 người hoàn toàn khác.
Good to know that :smile:

6 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?