我正在尝试为MySQL设计一个用户表.
现在,我的用户表看起来像这样
users (
BIGINT id,
VARCHAR(?) username,
VARCHAR(?) password,
VARCHAR(254) email,
DATETIME last_login,
DATETIME data_created
)
Run Code Online (Sandbox Code Playgroud)
我还应该包括哪些其他领域?为什么我需要它们?
我应该从上面排除哪些字段?为什么?
我应该为用户名和密码分配多少个字符,为什么?
我应该使用BIGINT作为身份证吗?
提前感谢您的帮助.
添加我将使用该表用于社交网站,因此"用户"指的是世界各地的人们.
我想制作在即时消息中模仿组策略的用户组系统.
每个用户可以根据需要创建任意数量的组,但是他们不能拥有重复名称的组,并且他们可以将任意数量的朋友放入任何组中.
例如,John的朋友Jen可以同时在John的"学校"小组和John的"同事"小组中.并且,它完全独立于Jen如何将John带入她的团队.
我正在考虑两种可能的方法在数据库user_group表中实现它.
1.
user_group (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT,
group_name VARCHAR(30),
UNIQUE KEY (user_id, group_name)
)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,所有用户拥有的所有组都将具有唯一ID.因此,id本身可以识别哪个用户和组的名称.
2.
user_group (
user_id INT,
group_id INT AUTO_INCREMENT,
group_name VARCHAR(30),
PRIMARY KEY (user_id, group_id),
UNIQUE KEY (user_id, group_name)
)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,group_id总是从每个用户的0开始,因此,可能存在许多具有相同group_id的组.但是,pk对(user_id,group_id)在表中是唯一的.
哪种方式更好实现,为什么?每种情况有哪些优点和缺点?
编辑:在第二种情况下将AUTO_INCREMENT添加到group_id,以确保为每个user_id从0自动分配.
编辑:'更好'意味着...... - SELECT/INSERT/UPDATE朋友对组的更好表现,因为那将是关于用户组的最常用的操作. - 数据库的稳健性,就用户规模而言,它更安全. - 任何一方的受欢迎程度或普遍偏好. - 灵活性 - 可扩展性 - 可用性 - 更易于使用.
我打算将'status','date_created','date_updated'包含在数据库中的每个表中.'status'用于软删除行.
然后,我发现很少有人也为每个表添加'user_created','user_updated'列.
如果我也添加这些列,那么每个表至少有5列.这会是太多的开销吗?
你觉得拥有这五个专栏是个好主意吗?
另外,'user_created'中的'user'是否意味着数据库用户?或应用程序用户?
我有一个如下所示的tableview行.
<View style={{flexDirection: 'row', justifyContent: 'space-between'}}>
<Text>{user.fullName}</Text>
<Button/>
</View>
Run Code Online (Sandbox Code Playgroud)
上面的渲染使得名称贴在左边,按钮贴在右边.
-----------------------------------
User's Full Name Button
-----------------------------------
Run Code Online (Sandbox Code Playgroud)
当用户的全名足够短时,这一切都很好.
但是,当用户的名字很长时.这是它的外观.
-----------------------------------
User's Very Very Long Full Name Button
-----------------------------------
Run Code Online (Sandbox Code Playgroud)
现在,行内容溢出行的宽度,按钮离开屏幕变得不可见.
我想要的是这个.
-----------------------------------
User's Very Very Long... Button
-----------------------------------
Run Code Online (Sandbox Code Playgroud)
如何使用flexbox模型实现这一目标?
如何使name增长和填充可用宽度,但不超过?
请注意,Button可以根据本地状态增长或缩小.
还有,相当于text-overflow: ellipsis反应原生吗?
Unpacked在https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-8.html中引用。
type Unpacked<T> =
T extends (infer U)[] ? U :
T extends (...args: any[]) => infer U ? U :
T extends Promise<infer U> ? U :
T;
Run Code Online (Sandbox Code Playgroud)
可以有这个的递归版本吗?我已经尝试过,并且正在循环引用自身错误。
type Unpacked<T> =
T extends (infer U)[] ? Unpacked<U> :
T extends (...args: any[]) => infer U ? Unpacked<U> :
T extends Promise<infer U> ? Unpacked<U> :
T;
Run Code Online (Sandbox Code Playgroud)
由于循环引用,以上代码失败。
递归版本将执行此操作:
Unpacked<Array<Promise<number[]>>> === number;
Run Code Online (Sandbox Code Playgroud)
当我们不知道它需要打开多深时,它很有用。
当查看以下代码时:
type Test<T extends {a: number}> = ...doing something with keyof T...
Test<{a:1}> // ok
Test<{a:1, b:1}> // ok, but I want this to fail due to having 'b';
Run Code Online (Sandbox Code Playgroud)
有没有办法通过严格限制形状并且不允许额外的属性来使第一个可以,但第二个不行。
在S3文档上,有createPresignedPost和getSignedUrl。
在getSignedUrl上:
注意:使用预签名URL时,不支持所有操作参数。发送请求时,必须提供某些参数(例如SSECustomerKey,ACL,Expires,ContentLength或Tagging)作为标头。如果您使用预签名URL从浏览器上载并且需要使用这些字段,请参见createPresignedPost()。
是createPresignedPost只是getSignedUrl的更可定制的版本吗?它在下面做同样的事情吗?
谷歌刚刚发布了Firebase 2.0.
它们似乎是完全独立的平台.
Firebase:https://www.firebase.com/
Firebase 2.0:https://firebase.google.com/
API也不同.
Firebase:https://www.firebase.com/docs/web/api/
Firebase 2.0:https://firebase.google.com/docs/reference/js/#firebase
有人可以解释移动和网络核心概念的差异吗?
我一直在使用旧的Firebase构建应用程序.
我应该更改我的代码才能使用Firebase 2.0吗?
database ×2
mysql ×2
typescript ×2
amazon-s3 ×1
aws-sdk ×1
css ×1
file-upload ×1
firebase ×1
flexbox ×1
react-native ×1
timestamp ×1
web ×1