Nano Banana Pro
Agent skill for nano-banana-pro
This skill provides guidance on designing Dataverse table schemas and data models. Use when users ask about "Dataverse table design", "Dataverse schema", "Dataverse relationships", "Dataverse columns", "data modeling Dataverse", "Dataverse best practices", or need help designing their data structure
Sign in to like and favorite skills
This skill provides guidance on designing Dataverse table schemas and data models. Use when users ask about "Dataverse table design", "Dataverse schema", "Dataverse relationships", "Dataverse columns", "data modeling Dataverse", "Dataverse best practices", or need help designing their data structure.
new_, cr123_)new_Project, new_Task)new_projectname, new_startdate)# Basic table client.create_table("new_Project", { "new_ProjectName": "string", # Text column "new_Description": "string", # Multi-line text "new_Budget": "decimal", # Currency/decimal "new_StartDate": "datetime", # Date and time "new_IsActive": "bool", # Yes/No "new_Priority": Priority # Choice/enum })
# Single line (max 4000 chars) "new_Name": "string" # Multi-line text (memo) "new_Description": "string" # Will be nvarchar(max)
# Integer "new_Quantity": "int" # Decimal (with precision) "new_Amount": "decimal" # Default precision # Currency (use decimal with formatting) "new_Budget": "decimal"
# Date and time "new_StartDate": "datetime" # Date only (format in app) "new_DueDate": "datetime"
# Yes/No "new_IsActive": "bool" "new_IsApproved": "bool"
from enum import IntEnum class Status(IntEnum): DRAFT = 1 SUBMITTED = 2 APPROVED = 3 REJECTED = 4 class Priority(IntEnum): LOW = 1 MEDIUM = 2 HIGH = 3 # Create table with choices client.create_table("new_Request", { "new_Name": "string", "new_Status": Status, "new_Priority": Priority })
Parent table has many child records.
Account (1) ←→ (N) Contact └── An account has many contacts Project (1) ←→ (N) Task └── A project has many tasks
Implementation:
@odata.bind# Create contact linked to account contact = { "firstname": "John", "lastname": "Doe", "[email protected]": f"/accounts({account_id})" } client.create("contact", contact)
Records in both tables can relate to multiple records in the other.
Account (N) ←→ (N) Contact └── Contacts can be related to multiple accounts
Note: N:N relationships require creating an intersection entity via the UI or advanced API calls.
Table references itself (e.g., employee hierarchy).
Employee ├── new_ManagerId → Employee └── Parent employee record
Account (Master) ├── new_AccountNumber ├── new_Name └── Contacts (Detail) ├── new_FirstName ├── new_LastName └── _parentcustomerid_value (FK)
new_Request ├── new_Name ├── new_Status (Draft → Submitted → Approved/Rejected) ├── new_SubmittedOn ├── new_ApprovedBy └── new_ApprovedOn
new_Order ├── new_OrderNumber ├── new_Status ├── createdon (system) ├── createdby (system) ├── modifiedon (system) └── modifiedby (system)
# Add new columns client.create_columns("new_Project", { "new_CompletionPercentage": "int", "new_ActualEndDate": "datetime" }) # Remove columns client.delete_columns("new_Project", ["new_OldColumn"])
references/table-design.md for detailed patternsreferences/relationships.md for relationship examplesreferences/performance.md for optimization tips